[问题] 如何由组合后的字串导向变量名称?

楼主: 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