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的建議。 –