R有人能向我解释一下为什么一个在列表中循环而另一个不是?



我有一个字符串列表,我想循环到每一个。

主要问题是列表是这样的

list <- list("word", "word", "two, word", "word")

我的尝试是使包含两个单词的项成为它自己的列表。即:

list <- list("word", "word", ["two", "word"], "word")

为了做到这一点,我想循环并重新赋值。

现在我成功地在第一层循环了没有问题

list <- list("word", "word", "two, word", "word")

当尝试遍历第二层时会出现这个问题。

请参阅下面的代码。从技术上讲,这两种方法应该返回相同的项,但由于某种原因,它们没有返回相同的项。

输入图片描述

我期待这两种技术IE

for(j in 1:length(TacticList[i])){
for(k in 1:length(TacticList[i][j])){
print(TacticList[i][j][k])
}
}

for (element in TacticList[i]){
for (thing in element){
print(thing)
}

返回相同的值。

虽然在我目前的情况下,我需要第一种技术返回由第二种技术给出的值。考虑到第一种技术是指针,它将对我重新分配数据很有用。

我们可以做

lapply(list, (x) unlist(strsplit(x, ",\s+")))

与产出

[[1]]
[1] "word"
[[2]]
[1] "word"
[[3]]
[1] "two"  "word"
[[4]]
[1] "word"

我不确定多for的事情,但也许这是有效的:

L <- list("word", "word", "two, word", "word")
out <- rapply(L, strsplit, split = "[, ]+", how = "replace")
str(out)
# List of 4
#  $ :List of 1
#   ..$ : chr "word"
#  $ :List of 1
#   ..$ : chr "word"
#  $ :List of 1
#   ..$ : chr [1:2] "two" "word"
#  $ :List of 1
#   ..$ : chr "word"

最新更新