【发布时间】:2014-03-01 03:46:57
【问题描述】:
我正在尝试在 reshape 包中的“cast”函数周围包装一个函数,该函数在转换之前对我的数据进行一些检查。
cast2 <- function(data, formula = ... ~ variable, fun.aggregate = NULL,
..., margins = FALSE, subset = TRUE, df = FALSE, fill = NULL,
add.missing = FALSE, value = guess_value(data)) {
#RunChecksOnData()
return(cast(data, formula = formula, fun.aggregate = fun.aggregate, ..., margins = margins, subset = subset, df = df, fill = fill, add.missing = add.missing, value = value))
}
如果没有检查,我希望这个函数 'cast2' 会返回与 cast 相同的结果。 但是,当我采用其中一个特色示例时
names(airquality) <- tolower(names(airquality))
aqm <- melt(airquality, id=c("month", "day"), na.rm=TRUE)
然后运行:
cast2(aqm, day ~ month, mean, subset=variable=="ozone")
这会导致错误“eval(expr, envir, enclos) 中的错误:找不到对象‘变量’”
我怀疑这与公式通过函数的方式有关,但我无法弄清楚。 (我意识到我可以通过在 cast2 中复制所有 cast 函数代码来从技术上解决这个问题,但我确信一定有更简洁的方法。
【问题讨论】: