如何将列表的每个元素合并到 R 中的其他元素



>假设:我想比较所有元素并在Excel工作表中获取最终值。我正在将我的列表元素转换为 data.frame,然后合并它们。当我手动执行此操作时,它工作正常,但是当我尝试在循环中执行时,我无法做到。我想合并列表的所有元素并将它们存储在一个变量 (mer3) 中,该变量可以导出到 Excel 工作表中

list1 = list("abc","def","ghi","jkl")
[...
extra code to convert every list element into data.frame
df_abc
df_def
df_ghi
df_jkl
]
mer1 <- merge(df_abc,df_def, all = TRUE)
mer2 <- merge(mer1,df_ghi, all = TRUE)
mer3 <- merge(mer2,df_jkl, all = TRUE)
write.xlsx(mer3, file="mydata.xlsx",sheetName="merged data list")

示例数据:(根据下面的建议,但在循环执行合并命令后显示 null)

> DF_list1
[[1]]
webId  name
1 UA-4  Auth
2 UA-4  Cat
3 UA-4  Sub Cat
[[2]]
webId  name
1 UA-6  Auth
2 UA-6  Visit
3 UA-6  Sub Cat
[[3]]
webId  name
1 UA-7  Session
2 UA-7  Cat
3 UA-7  Sub Cat
merged <- DF_list1[[1]] 
for (m in 2:length(DF_list1))
merged <- merge(merged, DF_list1[[m]])

我认为您可以在 for 循环中执行此操作,如下所示:

merged <- merge(list1[[1]],list1[[2]])
for(i in 3:length(allframes)) {
merged <- merge(merged,list1[[i]])
}

但是,如果数据帧的列相同,则可以绑定它们:

从 R 文档:

do.call 构造并执行来自名称或 函数和要传递给它的参数列表。

因此,您可以将数据帧列表传递给函数 rbind 以合并它们:(如果 list1 是数据帧列表)

result <- do.call(rbind,list1)

相关内容

  • 没有找到相关文章

最新更新