0
我想动态创建列表中的元素,其中列表中的每个元素实际上是一个值列表。为了隔离问题,在此使用i=3
,但i
确实可以是任何整数或任何字符/字符串。如何使用R中的“eval”指定列表中的变量名称?
i=3
varname = paste("x", as.character(i), sep="")
X=list()
var = rnorm(10, 100, 5)
new_list=list(eval(varname)=var)
上面给出了错误回溯:
3: var = rnorm(10, 100, 5)
4: new_list=list(eval(varname)=
但现在检查了这一点:
# but "eval(varname)" is a character
print(eval(varname))
[1] “X3”
# and this works:
new_list=list("x3"=var)
...那么,为什么行new_list=list(eval(varname)=var)
没有工作?
这个工程命名的元素。但为什么不是我尝试这项工作的方式?请帮助我更深入地了解R的细微差别。 – Hunle
你的代码不工作的原因是因为'eval(varname)'不会被评估。它位于呼叫中等号的左侧。这是一个特殊的位置,需要一个直接的名字。使用akrun的建议。 –