应用中的eval(expr,envir,enclos)出错(boxcox)

时间:2015-07-27 11:08:15

标签: r

我有一个大约650列的矩阵,对于每一列,我想找到boxcox变换的最佳lambda。 我想使用MASS包中的函数boxcox,它输出两个列表:$ x $是可能的lambdas列表,$ y $是给定lambdas的对数似然值列表。最佳lambda是得分最高的那个。

我认为下面这段代码可行:

library(MASS)
optimal.lambda1 <- apply(mymatrix, 2, function (d) {
    boxcoxlist <- boxcox(lm(d~1), lambda=seq(-5,5,by=.1), plotit=F)
    p <- boxcoxlist$x[which.max(boxcoxlist$y)]
    return(p)
    }
)

不幸的是我总是得到同样的错误:

Error in eval(expr, envir, enclos): object 'd' not found

如果我尝试使用它的lapply版本,也会出现类似的错误:

library(MASS)
optimal.lambda1 <- lapply(1:ncol(mymatrix), function (d) {
    boxcoxlist <- boxcox(lm(mymatrix[,d]~1), lambda=seq(-5,5,by=.1), plotit=F)
    p <- boxcoxlist$x[which.max(boxcoxlist$y)]
    return(p)
    }
)

另外,我试图将对象函数隔离成类似

的东西
optimal.lambda2 <- function (d) {
    boxcoxlist <- boxcox(lm(d~1), lambda=seq(-5,5,by=.1), plotit=F)
    p <- boxcoxlist$x[which.max(boxcoxlist$y)]
    return(p)
    }

然后将它用作(l)apply的参数,但第二个函数单独返回错误;即,单独以下命令始终返回相同的错误:

optimal.lambda2(mymatrix[,1])

有关如何使其有效的任何建议吗?

0 个答案:

没有答案
相关问题