我正在使用包glmulti将模型拟合到多个数据集。如果我一次适合一个数据集,一切都可以正常工作。为什么我不能将数据集传递给函数?
因此,例如:
output <- glmulti(y~x1+x2,data=dat,fitfunction=lm)
的作品就好了。
但是,如果我创建一个包装的功能,像这样:
analyze <- function(dat)
{
out<- glmulti(y~x1+x2,data=dat,fitfunction=lm)
return (out)
}
根本不起作用。我得到的错误是
error in evaluating the argument 'data' in selecting a method for function 'glmulti'
除非有一个名为dat的数据帧,否则它不起作用。如果我使用results=lapply(list_of_datasets, analyze)
,它不起作用。 那么给了什么?没有我说的包装,我不能通过这个函数来获取数据集列表。如果任何人对这种情况发生的原因或想法有所了解或想法,那就太好了。
例子2:
dat=list_of_data[[1]]
analyze(dat)
工作正常。因此,从某种意义上说,它忽略了参数,只是在寻找名为dat的数据帧。无论我称之为什么,它的表现都是一样的。
非常感谢Joris。我真的必须坐下来研究S4方法。至少现在我可以看到这种解决方法的行为。干杯。 – Maiasaura 2010-09-07 19:38:01
只要在工作区中没有名为“dat”的对象,它就表现良好。如果是这样,那个将被assign()函数覆盖。这是你一定要避免的...... – 2010-09-07 19:43:37
不是S4和.GlobalEnv再次:拍额头:。 – 2010-09-09 10:46:10