【发布时间】:2019-12-19 11:14:24
【问题描述】:
我正在尝试将数据框列表中的每个数据框与单个数据框的不同列合并。也就是说,列表元素 1 中的数据框应与单个数据框的第 1 行合并,列表元素 2 中的数据框应与单个数据框的第 2 行合并,依此类推。举个例子更容易理解。
这是我的数据框列表:
df1 <- data.frame(col1 = 11:14, col2 = 11:14)
df2 <- data.frame(col1 = 12:15, col2 = 12:15)
df3 <- data.frame(col1 = 13:16, col2 = 13:16)
df_list <- list(df1, df2, df3)
所以df_list 看起来像这样:
[[1]]
col1 col2
1 11 11
2 12 12
3 13 13
4 14 14
[[2]]
col1 col2
1 12 12
2 13 13
3 14 14
4 15 15
[[3]]
col1 col2
1 13 13
2 14 14
3 15 15
4 16 16
这是我的单个数据框:
df_to_merge <- data.frame(col3 = 1:3, col4 = 4:6)
col3 col4
1 1 4
2 2 5
3 3 6
我可以通过循环轻松实现我想要的结果:
what_i_want <- list()
for (i in 1:nrow(df_to_merge)) {
what_i_want[[i]] <- merge.data.frame(df_list[[i]], df_to_merge[i, ])
}
这给出了:
[[1]]
col1 col2 col3 col4
1 11 11 1 4
2 12 12 1 4
3 13 13 1 4
4 14 14 1 4
[[2]]
col1 col2 col3 col4
1 12 12 2 5
2 13 13 2 5
3 14 14 2 5
4 15 15 2 5
[[3]]
col1 col2 col3 col4
1 13 13 3 6
2 14 14 3 6
3 15 15 3 6
4 16 16 3 6
有没有更优雅的方法来结合例如lapply() 和 apply()?还是mapply()?我试过了,但我唯一能做的就是将列表中的每个元素与单个数据框的 每个 行结合起来,这是我不想要的。
提前感谢您提供任何创造性的解决方案!
【问题讨论】: