R中的for循环没有粘贴到列表的各个部分

时间:2016-06-03 16:48:28

标签: r list for-loop

假设我有一个每个部分有不同长度的列表

[[1]
[1] 0 0 0 0 0 0 0 0 0 0 

[[2]]
[2] 0 0 0 0 

实际上,这个列表每个部分有数百万个元素。

我现在使用两个for循环来填充列表。

i 采用列表的长度(本例中为2)。

j 根据 i 所在的位置显示列表每个部分的长度(此处为10和4)。

for(i in 1:length(testlist)){
for(j in 1:length(testlist[[i]]$ToBeDeleted)){


emptylist2[i] <- paste(testlist[[i]]$ToBeDeleted[j],   

testlist[[i]]$ReasonToBeDeleted[j], sep=";")


  }}

请尝试忽略变量名称,它们并不重要。

输出不是我想要的。它看起来(在可重现的示例上下文中)是这样的:

[[1]
[1] 0;NA

[[2]]
[2] 0;Na

循环只向列表的每个部分发布了一个“元素”,它们没有填充整个列表。

我希望看到的(数字和文字采用许多不同的值)是:

[[1]
[1] 0;NA 0;test1 0;NA 1;variable 1;etc 0;randomname 0;NA 0;Na 0;nA 0;na 

[[2]]
[2] 1;frfrf 0;na 0;na 0;na 

这是一个可重复的例子

x <- vector("list", 2)
x[[1]] <- c(0,0,0,0,0,0,0,0,0,0)
x[[2]] <- c(0,0,0,0)

z <- vector("list", 2)
z[[1]] <- c(0,0,1,4,5,6,7,8,9,10)
z[[2]] <- c("a","b","c","d")

emptylist2 <- vector("list", 2)



for(i in 1:length(emptylist2)){
for(j in 1:length(x)){


x[i] <- paste(z[[i]][j], z[[i]][j], sep=";")


}}

正如所指出的那样,通过将x [i]改为x [[i]] [j]来确定

0 个答案:

没有答案