我正在使用包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