我对这个功能不起作用并不感到惊讶,但我不太明白为什么。

computeMeans <- function(data,dv,fun) {
    x <- with(data,aggregate(dv,
        list(
            method=method,
            hypo=hypothesis,
            pre.group=pre.group,
            pre.smooth=pre.smooth
        ),
        fun ) )
    return(x)
}

computeMeans(df.basic,dprime,mean)

其中 df.basic 是一个包含 methodhypothesis 等因子和几个因变量的数据帧(我用 dv 参数 dprime 指定了一个)。

我有多个因变量和几个数据框,它们的形式都相同,所以我想编写这个小函数来保持“简单”。我得到的错误是:
Error in aggregate(dv, list(method = method, hypo = hypothesis,
pre.group = pre.group,  :
    object 'dprime' not found

但是 dprime 确实存在于 df.basic 中,它被 with() 引用。任何人都可以解释这个问题吗?谢谢!

编辑:这是 R 编程语言。 http://www.r-project.org/

最佳答案

尽管 dprime 存在于 df.basic 中,但当您在 ​​computeMeans 调用它时,它不知道您指的是什么,除非您明确引用它。

computeMeans(df.basic,df.basic$dprime,mean)

将工作。

关于R:将参数从包装函数传递给内部函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11729852/

10-12 17:36