私はdata.framesとその働きをよく理解しているように感じますが、リストの特定の側面は私を混乱させます。ここでリストの動作を理解する
を開始するために、いくつかの再現性のあるデータである:
list_a <- structure(list(`one` = structure(list(
words = c("a", "b","c", "d", "e", "f")), .Names = "words", class = "data.frame", row.names = c(NA,-6L)),
`two` = structure(list(words = c("a","s","t","z")), .Names = "words", class = "data.frame", row.names = c(NA, -4L))),
.Names = c("one", "two"))
これは私達を与える:
list_a
$one
words
1 a
2 b
3 c
4 d
5 e
6 f
$two
words
1 a
2 s
3 t
4 z
は今、私はdata.framesに結果の一部を返すために、リストをループにしたいです。
list <- list()
for(i in list_a){list <- append(list, list_a$i$words)}
これはリストに結果を生成しません。んでもない:
for(i in list_a){list <- append(list, list_a[[i]]$words)}
Error in list_a[[i]] : invalid subscript type 'list'
私はおそらく私の最初のループが機能しなかった理由は、私が正しい名前として私を定義せずにlist_a$i$words
を使用していたということだと思いました。だから私は試してみました:
for(i in names(list_a)){list <- append(list, list_a$i$words)}
これはまだ私に長さ0
のリストを与えるだから私は、私が試したの試みがdidntは私が期待した結果を与える理由の添え字を使用して、なぜ、私は知らない理解していません私にエラーを与え、最終的に私は正しい構文考え出し:名前のメソッドをやっていない使用している場合、この作業の理由
for(i in list_a){list2 <- append(list2, i$words)}
は、しかし、私は知りませんの?
'for'ループでオブジェクトに追加しないでください。あらかじめ割り当てておく(またはこれを行う 'lapply'のようなループ関数を使用する)ようにしてください。とにかく、 'list_a $ i $ words'の代わりに' i $ words'を使います。ループはリスト要素を反復する。すなわち、「i」はリスト要素を含み、それらのインデックスは含まない。 – Roland
ありがとう、誰かがそれをdownvotedとして質問の品質についての任意の洞察力と私はすべてのボックスをチェックした明快に例のデータから考えた? – Olivia