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)
.
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)
.