繁体   English   中英

将两个列表之间的data.frames合并为一列

[英]Merge data.frames between two lists by one single column

这是我的两个列表和data.frames的示例:

df1 = data.frame(a = c(1,2,3,4,5,6,7))
df2 = data.frame(a = c(111,112,113,114))

lst1 = list(df1, df2)

df3 = data.frame(a = c(1,2,3,4,5,6,7,8,9,10), b = c(10,11,12,13,14,15,16,17,18,19))
df4 = data.frame(a = c(111,112,113,114,115,116,117,118,119), b = c(22,23,24,25,26,27,28,29,30))

lst2 = list(df3, df4)

我需要合并lst1lst2a才能有df1与合并df3df2df4

这是我想要的输出:

> output_lst
[[1]]
   a  b
   1 10
   2 11
   3 12
   4 13
   5 14
   6 15
   7 16

[[2]]
    a  b
1 111 22
2 112 23
3 113 24
4 114 25

我用lapplyMap尝试了很多但没有结果。 谢谢

只是:

Map(merge, lst1, lst2)
#or more explicitly
Map(merge, lst1, lst2, by="a")

Map基本上是一个美化的循环:

merge(lst1[[1]], lst2[[1]], by="a")
#and
merge(lst1[[2]], lst2[[2]], by="a")

试试这个:

sapply(seq_len(length(lst1)), 
       function(i) list(merge(lst1[[i]], lst2[[i]], by = "a", all.x=TRUE)))

# [[1]]
  # a  b
# 1 1 10
# 2 2 11
# 3 3 12
# 4 4 13
# 5 5 14
# 6 6 15
# 7 7 16

# [[2]]
    # a  b
# 1 111 22
# 2 112 23
# 3 113 24
# 4 114 25

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM