2016-05-30 1 views
0

リスト内の各要素が実際に値のリストである、リスト内の要素を動的に作成しようとしています。問題を分離するために、i=3がここで使用されますが、iは実際には任意の整数または任意の文字/文字列になります。Rの "eval"を使って変数名をリストに割り当てる方法は?

3: var = rnorm(10, 100, 5) 
4: new_list=list(eval(varname)= 

しかし、今これをチェック:

i=3 
varname = paste("x", as.character(i), sep="") 
X=list() 
var = rnorm(10, 100, 5) 
new_list=list(eval(varname)=var) 

上記のエラートレースバック与え

# 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)という行は動作しないのですか?

答えて

0

それはこの作品setNames

new_list <- setNames(list(var), varname) 
+0

で要素に名前を付けることが容易です。しかし、なぜ私はこの仕事をしようとしている方法ではありませんか? Rのニュアンスをもっと深く理解するのを助けてください。 – Hunle

+0

あなたのコードがうまくいかないのは、 'eval(varname)'が評価されないためです。コール内の等号の左側にあります。それは簡単な名前を必要とする特別な位置です。 akrunの提案を使用してください。 –

関連する問題