我想这是另一个问题,因为在S4方法的解析树中定义了环境(这也是为什么我不喜欢S4的原因之一…)
可以通过在dat周围添加引号来显示:
> analyze <- function(dat)
+ {
+ out<- glmulti(y~x1+x2,data="dat",fitfunction=lm)
+ return (out)
+ }
> analyze(test)
Initialization...
Error in eval(predvars, data, env) : invalid 'envir' argument
您应该首先将此信息发送给包的维护人员,因为他们知道如何在内部处理环境。他们必须调整功能。
对于你自己来说,一个非常肮脏的解决方法就是把“dat”放到全局环境中,然后删除它。
analyze <- function(dat)
{
assign("dat",dat,envir=.GlobalEnv) # put the dat in the global env
out<- glmulti(y~x1+x2,data=dat,fitfunction=lm)
remove(dat,envir=.GlobalEnv) # delete dat again from global env
return (out)
}
编辑:
为了清楚起见,这确实是最糟糕的解决方案,但我找不到更好的解决方案。如果有人给你一个解决方案,你不必接触你的全球环境,一定要使用这个。