R: for 循环只对最后一个列表元素执行

连指手套

我有一个来自不同门和类别的样本的数据集(mags),我想对其进行排序。首先,我创建了一个空列表,其中包含与不同门一样多的空数据框。原则上这是可行的,但人们已经可以在输出中看到问题。

Phylum <- c("a", "b", "c", "d")
Mags <- data.frame(Phylum=c("a", "a", "b", "c", "d", "d", "d"), 
                   Class=c("A1", "A2", "B1", "C1", "D1", "D2", "D3"))

erg <- list()

for (i in length(Phylum)) {
  erg[[i]] <- data.frame(i)
}

names(erg) <- Phylum

之后,我想对样本进行排序。哪个门包含哪些类。这些类应该写入数据框,而每个门在列表中都有自己的数据框。

for (i in length(Phylum)){
  erg[[i]] <- data.frame(unique(Mags$Class[Mags$Phylum == Phylum[i]]))
  
}

在输出中,它仅适用于列表的最后一个元素。但我想不通为什么。

为确保该函数原则上执行我想要的操作,我在没有 for 循环的情况下进行了尝试。

erg[[1]] <- data.frame(unique(Mags$Class[Mags$Phylum == Phylum[1]]))
erg[[2]] <- data.frame(unique(Mags$Class[Mags$Phylum == Phylum[2]]))
erg[[3]] <- data.frame(unique(Mags$Class[Mags$Phylum == Phylum[3]]))
erg[[4]] <- data.frame(unique(Mags$Class[Mags$Phylum == Phylum[4]]))

在此先感谢您的帮助。

阿拉什哈拉蒂安

你应该替换length(Phylum)seq_along(Phylum).

for (i in seq_along(Phylum)){ # or 1:length(Phylum)
  erg[[i]] <- data.frame(unique(Mags$Class[Mags$Phylum == Phylum[i]]))
}

length(Phylum) 等于 4 但你需要 1 到 4。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在R中循环的最后一个元素之后追加到列表?

R,JAGS,r2jags:在“ for”循环的开头访问最后一个元素

如何获取R中列表的每个元素的最后一个子元素

在R循环中创建Plotly显示了所有元素的最后一个图表

R:for 循环只更新向量中的最后一个元素

绘图被覆盖,因此在R循环的末尾,所有内容均已从列表的最后一个元素提取。我究竟做错了什么?

R 中的 for 循环只迭代最后一个条目

嵌套的for循环仅迭代最后一个条目[r]

在R中的循环中创建xts列表时,会创建一个额外的list元素

r在for循环中打印列表的下一个元素

R从str_split获取最后一个元素

R循环“链接”列表:在最后一个索引上添加+1,将您带到第一个索引

如何在 R 中列表的每个向量(不同长度)中附加第一个和最后一个元素,而不会使代码变慢?

R:识别重复组中的第一个和最后一个元素

R在使用循环时访问列表的第一个元素并将其附加到向量中

如何使用for循环返回列表的最后一个元素

For 循环只迭代列表中的最后一个元素

使用列表的最后一个元素直到循环完成

R-根据组和上一个元素操作最后一行

R:如何选择列表中一个向量的第一个元素

R:如何使用一个列表的元素重命名不同长度的另一个列表的元素?

R中一个列表的元素与另一个列表的元素的Kronecker乘积之和

相对于另一个列表的元素删除列表的元素 R

在R中从列的第一个值到列的最后一个值循环

在 R 中读取 csv 文件并从最后一列中创建一个列表

R,如何使用for循环使列表中的每个元素由同一命令执行

我的循环仅适用于最后一个文件R

如何从R中的strsplit()获取空的最后一个元素?

在R中的字符串末尾插入字符,最后一个元素除外