2

リストに簡単に変換できる「by」呼び出しの出力を使用しようとしています...しかし、リストはまだ時々私に逆らいます

a = list('1'=c(19,3,4,5), '4'=c(3,5,3,2,1,6), '8'=c(1,3))

 for (i in c(1,8,4)){
    # would like to do something like this
     a[["i"]]      # calling list elements by name rather than # 
     }


 #ideally the output would be something like this

>19,3,4,5 
>1,3
>3,5,3,2,1,6
4

3 に答える 3

5

リスト名は文字列でなければなりません。数値にすることはできません。i文字列に変換する必要があります。as.characterorを使用pasteでき、ループの開始時またはループ内で実行できます。

a = list('1'=c(19,3,4,5), '4'=c(3,5,3,2,1,6), '8'=c(1,3))

# convert inside loop
for (i in c(1,8,4)) {
  print(a[[as.character(i)]])
}
# convert at initiation
for (i in as.character(c(1,8,4))) {
  print(a[[i]])
}
于 2012-04-30T19:10:57.340 に答える
2

リストの要素をループして、各要素で何かを行うだけの場合(例が単純化されていることに気づきました)、これを行う apply ファミリーの関数を検討してください。

lapply(a, print)

インタラクティブに入力すると、 の内部に出力されるため、物事が 2 回出力されlapply、次に の戻り値lapplyが出力されます。

于 2012-04-30T19:37:22.837 に答える
1

インデックスを作成せずにリストをループできます。

for (ai in a) {
    print(ai)
}

要素の名前が必要でない限り、それは良いことです。

于 2012-04-30T19:37:32.520 に答える