是否可以使用as.name来定位变量并修改其子元素?

时间:2018-05-03 18:27:16

标签: r

鉴于此:

vec1 = 1:10
varname = "vec1"

我知道我可以这样做:

eval(parse(text=paste0(varname,"[5] = 20")))

如果可能,我想找一些更干净的东西。我试过这个:

`<-`(`[`(as.name(varname), 5), 20)

但是我收到了一个错误:&#34;类型&#39;符号&#39;不是子集表格&#34;。

非常类似的 工作:

`<-`(`[`(vec1, 5), 20)

为什么vec1在作为as.name("vec1")函数的第一个参数传递时与[区别对待?

如果我试试这个:

`<-`(`[`(as.name("vec1"), 5), 20)

我得到了一个奇怪的错误:&#34;赋值目标扩展到非语言对象&#34;。

有人可以解释这里涉及的细微差别吗?有没有更简洁的方法来做我想要的,同时将vec1保持为一个简单的,独立的顶级变量?在这种情况下的实际情况更复杂,我已经有一个解决方法;我要求更多地了解可能的基本原理以及R不可能做到的事情。

0 个答案:

没有答案