2017-12-14 21 views
3

私はベクトルの文字値を使って新しいオブジェクトに名前を付け、新しいオブジェクトを新しい行列にしようとしています。だから私は、次のベクトルを持っている場合:ベクトル値の名前オブジェクト

私はこのコードがことを実現し、「A」という名前のオブジェクトを作成するループ、「B」、および「C」

for(i in 1:length(Named)){ 
Named[i] <- matrix(0L, nrow = 3, ncol = 3) 
} 

を持つようにしたい

Named <- c("a", "b", "c") 

現在ベクトルにデータを入力しています。新しいオブジェクトの名前として使用する名前付き[i]の文字を抽出するにはどうすればよいですか?

ループは、このコードを書くのと同じことをしないように:

a <- matrix(0L, nrow = 3, ncol = 3) 
b <- matrix(0L, nrow = 3, ncol = 3) 
c <- matrix(0L, nrow = 3, ncol = 3) 

答えて

1

1)を割り当てを使用すると、地球環境にそれらを割り当てる必要がある場合は通常1がリストに値を代入したいだろうがすでに地球環境レベルでこれをやっている場合

for(nm in Named) assign(nm, matrix(0L, 3, 3), .GlobalEnv) 

は、あなたが、必要に応じへの最後の引数を省略できます。これはforループのための良いアプリケーションです3210。

2)指数地球環境また、これは動作します:

for(nm in Named) .GlobalEnv[[nm]] <- matrix(0L, 3, 3) 

3)別のアプローチは、地球環境にそのコンポーネントをコピーするlist2envを使用し、リストを作成することですlist2env。

list2env(Map(function(x) matrix(0L, 3, 3), Named), .GlobalEnv) 

4)ハード注意をコーディングすることあなただけ割り当てるためにいくつかの要素を持っていて、変数によって、このようなようなNamedあなたはできるだけのハードコード、それをパラメータ化する必要がない場合:

a <- b <- c <- matrix(0L, 3, 3) 

5)リスト最後に、あなたが、代わりに地球環境内のオブジェクトのリストを作成することを決定しない場合:

L <- Map(function(x) matrix(0L, 3, 3), Named) 
関連する問題