gpt4 book ai didi

r - Map() 和 dplyr 连接

转载 作者:行者123 更新时间:2023-12-03 09:09:32 25 4
gpt4 key购买 nike

我有两个列表,两个列表都包含对应于不同年份的相似数据集。我希望逐个元素合并两个列表中的数据集。当我使用 mapply 以及 dplyr::full_join 时,在变量名称不匹配的情况下,我需要使用 by参数,R 无法执行连接。

library(dplyr)
set.seed(100)

first_list <- list(data.frame(x = 1:3, y = rnorm(3)),
data.frame(x = 4:6, y = rnorm(3)))

second_list <- list(data.frame(z = 1:3, w = rnorm(3)),
data.frame(z = 4:6, w = rnorm(3)))

Map(full_join, by = c("x" = "z"), first_list, second_list)
#Error: 'z' column not found in rhs, cannot join

但是,

Map(function(x, y) full_join(x, y, by = c("x" = "z")), first_list, second_list)

工作成功。我对这种行为很好奇,想知道是否有人可以提供一些解释。

最佳答案

由于 Mapmapply 的包装器,因此请使用其 MoreArgs 参数,而其他必需的参数 (...) 包括要矢量化(参见 ?mapply):

test1 <- Map(full_join, first_list, second_list, MoreArgs=list(by = c("x" = "z")))

test2 <- Map(function(x, y) full_join(x, y, by = c("x" = "z")), first_list, second_list)

all.equal(test1, test2)
# [1] TRUE

关于r - Map() 和 dplyr 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43985487/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com