我覺得我對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
所以我不明白爲什麼嘗試我試過沒有給我希望的結果,我不知道爲什麼使用標給了我一個錯誤,我終於想通了正確的語法:使用名稱方法時沒有
for(i in list_a){list2 <- append(list2, i$words)}
但是我不知道爲什麼這個工程?
不要追加到'for'循環中的對象。精簡預分配(或使用循環函數,例如'lapply'來爲你做這件事)。無論如何,使用'我$字'而不是'list_a $ i $ words'。循環迭代列表元素,即'i'包含列表元素而不是它們的索引。 – Roland
謝謝,任何有關問題質量的洞察力都是有人低估了它的,我認爲從示例數據到清晰度我已勾選了所有框? – Olivia