[問題] 如何由組合後的字串導向變數名稱?

作者: muscidae (異羽)   2020-10-21 10:49:56
[問題類型]:
程式諮詢(我想用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)
作者: locka (locka)   2020-10-21 10:58:00
eval(parse(text=''xy"))
作者: andrew43 (討厭有好心推文後刪文者)   2020-10-21 11:01:00
可用 get()
作者: cywhale (cywhale)   2020-10-21 11:01:00
是要get? xy=5; get(paste0("x","y"))
作者: muscidae (異羽)   2020-10-21 11:03:00
目前試過前面幾個方法都可以成功把值讀出,但不能賦值
作者: cywhale (cywhale)   2020-10-21 11:09:00
用assign
作者: muscidae (異羽)   2020-10-21 11:39:00
assign 成功了,謝謝大家
作者: locka (locka)   2020-10-21 12:52:00
可以分享一下你assign怎麼寫的嗎 謝謝~
作者: Gjerry   2020-10-21 20:48:00
最簡單的寫法是 assign(x, value) ,可以看assign說明
作者: muscidae (異羽)   2020-10-22 09:53:00
assign(paste0("x","y"),200)
作者: locka (locka)   2020-10-22 10:38:00
感謝原po,我有查過help,問題是assign(eval(parse(text="xy")),150)是不行的,error也看不出怎麼修改,才請教原po(原來直接paste即可)

Links booklink

Contact Us: admin [ a t ] ucptt.com