【发布时间】:2023-04-10 01:38:01
【问题描述】:
这是基于Simultaneously merge multiple data.frames in a list 上的示例。
我想将多个数据框与一个共同的列合并 - 可以使用链接上提供的示例来做到这一点。
但似乎使用参数sort=TRUE 没有效果。这是简短的、可重现的代码:
x <- data.frame(i = c("m","b","c"), j = 1:3)
y <- data.frame(i = c("n","c","d"), k = 4:6)
z <- data.frame(i = c("o","d","a"), l = 7:9)
合并所有它们不排序:
Reduce(function(dtf1, dtf2) merge(dtf1, dtf2, by = "i", all = TRUE),
list(x,y,z))
给我
i j k l
1 b 2 NA NA
2 c 3 5 NA
3 m 1 NA NA
4 d NA 6 8
5 n NA 4 NA
6 a NA NA 9
7 o NA NA 7
用排序合并所有这些:
Reduce(function(dtf1, dtf2) merge(dtf1, dtf2, by = "i", all = TRUE,sort = TRUE),
list(x,y,z))
给我与上面相同的结果。我知道我可以在合并后对数据框进行排序(我想它甚至可能更有效)但是为什么 sort = TRUE 没有效果?
我在 Mac 上的 RStudio 下运行 R 3.4.3。 谢谢 拉斐尔
【问题讨论】:
-
sort=的默认值为TRUEinmerge()。试试sort=FALSE。