R data.table函数无法识别已指定的参数

Jie*_* Wu 12 r function data.table

我遇到一个奇怪的问题,data.table如果函数在另一个函数中使用,函数不能识别明确定义的参数.

这是一个简单的例子:我在第一个函数时遇到错误testFun1,

Error in fun(value) : could not find function "fun"

但是,很明显有默认值fun.使用没有问题reshape2::dcast,请参阅testFun2.

testFun1 <- function(data, formula, fun = sum, value.var = "value") {
  data.table::dcast(data = data, formula = formula, fun.aggregate = fun,
                    value.var = "value")
}

testFun2 <- function(data, formula, fun = sum, value.var = "value") {
  reshape2::dcast(data = data, formula = formula, fun.aggregate = fun,
                    value.var = "value")
}

d <- data.table(x = c("a", "b"), y = c("c", "d"), value = 1)
testFun1(d, x ~ y)
# Error in fun(value) : could not find function "fun"
testFun2(d, x ~ y)
Run Code Online (Sandbox Code Playgroud)

小智 0

这似乎是以前版本的 data.table 中存在的错误,已修复,但又出现了。

解决方案是将包装函数中的参数名称从 更改为 ,fun使其与参数fun.aggregate名称匹配data.table::dcast

例子:

testFun1 <- function(data, formula, fun.aggregate = sum, value.var = "value") {
  data.table::dcast(data = data, formula = formula, 
                    fun.aggregate = fun.aggregate, value.var = "value")
}
Run Code Online (Sandbox Code Playgroud)