我有一个来自不同门和类别的样本的数据集(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] 删除。
我来说两句