Я полагаю, что это еще одна проблема из-за определения окружения в дереве разбора методов S4 (одна из причин, почему я не большой поклонник S4 ...)
Это можно показать, добавив кавычки вокруг даты:
> 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)
}
EDIT:
Просто для ясности, это действительно худшее из возможных решений, но мне не удалось найти ничего лучшего. Если кто-то другой дает вам решение, в котором вам не нужно прикасаться к вашей глобальной среде, обязательно используйте это.