У меня есть следующие функции:Установка изменения для цикла переменной в модели формулы
sincos.chooser <- function(mod,min,max) {
my.aic.sincos <- matrix(NA, ncol=2, nrow=max)
for(k in c(min:max)) {
sincos.update <- update(mod, .~. + I(cos(2*pi/k*(order.ID))) + I(sin(2*pi/k*(order.ID))))
my.aic.sincos[k,] <- c(k,AIC(sincos.update))
}
my.aic.sincos
}
Но когда я запускаю функцию, я получаю следующее сообщение об ошибке:
Error in get("k") : object 'k' not found
Как я сделать изменяющаяся переменная k признана в функции обновления моего цикла?
Я предполагаю, что проблема заключается в том, что функция обновления предполагает, что «k» - это имя столбца в моем data.frame и, следовательно, не может найти объект. Я хочу, чтобы он отображал «k» как переменную, а не как имя параметра.
Update: Я попытался с помощью get('k')
вместо просто "к". Это работает, если я перемещаю функцию update
вне функции «sincos.chooser», но создает ту же ошибку, что и выше, когда используется внутри моя функция.
Для тех, кто хочет видеть мои данные & модель:
Оригинальная модель:
gls(GDD ~ year + pdo, data = dat)
Формат моих данных:
> dat
year month temp.avg ppt.avg GDD pdo order.ID
1 1922 1 0.4935484 0.3535484 14.40737 -0.45 1
2 1923 2 4.3892857 0.4542857 56.03017 -1.51 2
3 1924 3 7.3032258 0.5435484 106.49244 -1.76 3
4 1925 4 12.8533333 0.2583333 239.07739 -1.71 4
5 1926 5 19.7903226 0.4667742 458.50000 -1.61 5
6 1927 6 24.2766667 0.3146667 578.30000 -1.11 6
он работает с 'as.formula' в вызове обновления? –
@KarstenW. это не работает. Я получаю ту же ошибку. – theforestecologist