如何将数据框列表与外部数据框合并为单个新数据框?
问题内容
我拥有一个包含51个数据框的列表,示例如下:
GENOME_1 <- data.frame(COG = c("a","b","c"), GEN_1 = c("names","morenames","diferent_genenames")) GENOME_2 <- data.frame(COG = c("a","b","c","d"), GEN_2 = c("names","names", "differen_genenames","somemorenames")) GENOME_3 <- data.frame(COG = c("a","c"), GEN_3 = c("names","different_genenames"))
此外,还有一个不在该列表中的参考数据框:
reference <- data.frame(COG = c("a","b","c","d","e"), Names = c("names","morenames","diferent_genenames","somemorenames","namesonlyfoundhere"))
该参考数据框约有800行,行数远多于列表中的数据框。我需要将列表中的每个数据框与这个外部参考数据框合并,生成如下格式的单个新数据框:
Dataframe_final <- data.frame(COG = c("a","b","c","d","e"), Names = c("names","morenames","diferent_genenames","somemorenames","namesonlyfoundhere"), GEN_1 = c("names","morenames","diferent_genenames", "NA", "NA"),GEN_2 = c("names","morenames", "differen_genenames","somemorenames", "NA"), GEN_3 = c("names","different_genenames", "NA","NA","NA"))
我尝试了以下循环代码:
for (i in seq_along(list_ofdataframes)) {newtable <- merge(reference, list_ofdataframes[[i]], by = "COG", all = T)}
但得到的结果仅保留了最后一个数据框的合并内容,不符合预期。
编辑:我发现使用以下命令可以实现需求:
finaldd <- Reduce(function(dtf1, dtf2) merge(dtf1, dtf2, by = "COG", all = TRUE), list(GENOME_1,GENOME_2,GENOME_3,reference))
View(finaldd)
but
内容的提问来源于stack exchange,提问作者Carlos Alberto Lara Rojas
相关产品推荐
相关产品推荐

