Может ли функция assign
в R использоваться для назначения имен объектов для моделей (например, моделей gls)? Я предполагаю, что не б/с я получаю предупреждение:R: может ли `assign` использоваться для моделей?
> Warning messages:
In assign(paste0(deparse(substitute(mod)), "_", i, j), update(mod, :
only the first element is used as variable name
В результате объекты не создаются
Есть ли способ сделать это?
Вот мой fucntion код, если это поможет:
#Choose best corARMA structure for model of choice:
corARMA.chooser <- function(mod,min = 0,max = 3) {
#This function creates 1. object for each combo of ARMA {0:3} 2. AIC table comparing all of these models
mod <- get('mod')
aic.arma <- AIC(mod)
ps <- 0
qs <- 0
for(i in min:max) {
js <- if(i == 0) c(1:max) else c(min:max)
for(j in js) {
arma <- corARMA(p = i, q = j)
assign(paste0(deparse(substitute(mod)),'_',i,j), update(mod, .~., correlation = arma), envir = .GlobalEnv)
aic.arma <- c(aic.arma, AIC(get(paste0(deparse(substitute(mod)),'_',i,j))))
ps <- c(ps, i)
qs <- c(qs, i)
}
aic.arma.out <- data.frame(ps, qs, aic.arma)
aic.arma.out
}
}
Update:
Я попытался использовать подход списка, но я получаю сообщение об ошибке:
Error in names(mod.list) <- c(names(mod.list), paste0(deparse(substitute(mod)), :
'names' attribute [1275] must be the same length as the vector [1]
Используйте 'list'. Также ошибка отличается от предупреждения. – Gregor
Бит неопределенный. не могли бы вы немного рассказать? – theforestecologist
Вместо того, чтобы пытаться назначать имена для моделей, вы должны поместить модели в список. Именование списка очень просто. Делать вещи для каждого элемента списка легко. Это намного лучше. [См. Мой ответ здесь для примера фрейма данных] (http://stackoverflow.com/a/24376207/903061). – Gregor