R中do.call循环期间函数中未使用的参数错误

Unused Argument Error in function during a do.call loop in R

funMergeA <- function(x,y = NULL) {
    if (is.null(y)) {
        return(x)
    } else {
        return(funMerge(x,y,"a"))
    }
}

funMerge <- function(x,y,myby="a") {
    return(merge.data.frame(x,y,by=myby,all=TRUE))
}

b <- list(data.frame(a=1:10,b=rnorm(10)),
          data.frame(a=1:10,b=rnorm(10)),
          data.frame(a=1:10,b=rnorm(10)))

这有效:

funMergeA(funMergeA(funMergeA(b[[1]],NULL),b[[2]]),b[[3]])

这不是 :

do.call(funMergeA,b)

我很困惑为什么第二个不起作用。我的理解是这两个表达式是严格等价的。我的理解有问题吗?

欢迎大家帮忙!

do.call 一次遍历 b 一个元素,但不是以您需要的方式递归。你需要 Reduce(funMergeA, b).