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)