作者muscidae (異羽)
看板R_Language
標題[問題] 如何由組合後的字串導向變數名稱?
時間Wed Oct 21 10:49:56 2020
[問題類型]:
程式諮詢(我想用R 做某件事情,但是我不知道要怎麼用R 寫出來)
[軟體熟悉度]:
入門(寫過其他程式,只是對語法不熟悉)
[問題敘述]:
在 Excel 裡有一個 INDIRECT() 函數,可以以字串(ex "$B$1"),回傳該位置的數值
想請問大家在 R 裡有沒有類似的功能。我目前需要使用拼接後的字串導向與那個字串內容
同名的數值。
[程式範例]:
> xy <- 100
> paste0("x","y")
[1] xy
## xxx() 是我想請教的功能
> xxx(paste0("x","y"))
[1] 100
## 實際上會使用在 phyloseq package 裡的 phyloseq 格式
## 我想應該沒辦法把值丟到 data.frame 裡再由欄列名指向
## 補充: 除了讀出來,我更需要把值丟到那個名字裡
> eval(parse(text="xy")) <- 200
Error in eval(parse(text = "xy")) <- 200 : 賦值目標擴充到非語言的物件
## get 也不能成功
[環境敘述]:
R 4.0.2
[關鍵字]:
INDIRECT(excel)
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.120.200.94 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1603248598.A.38C.html
※ 編輯: muscidae (140.120.200.94 臺灣), 10/21/2020 10:50:43
※ 編輯: muscidae (140.120.200.94 臺灣), 10/21/2020 10:59:22
推 locka: eval(parse(text=''xy")) 10/21 10:58
推 andrew43: 可用 get() 10/21 11:01
→ cywhale: 是要get? xy=5; get(paste0("x","y")) 10/21 11:01
→ muscidae: 目前試過前面幾個方法都可以成功把值讀出,但不能賦值 10/21 11:03
※ 編輯: muscidae (140.120.200.94 臺灣), 10/21/2020 11:06:39
→ cywhale: 用assign 10/21 11:09
→ muscidae: assign 成功了,謝謝大家 10/21 11:39
→ locka: 可以分享一下你assign怎麼寫的嗎 謝謝~ 10/21 12:52
→ Gjerry: 最簡單的寫法是 assign(x, value) ,可以看assign說明 10/21 20:48
→ muscidae: assign(paste0("x","y"),200) 10/22 09:53
→ locka: 感謝原po,我有查過help,問題是assign(eval(parse(text="x 10/22 10:38
→ locka: y")),150)是不行的,error也看不出怎麼修改,才請教原po(原 10/22 10:38
→ locka: 來直接paste即可) 10/22 10:38