2017-02-02 19 views
0

мне нужно создать именованный список линейных моделей в R.Как создать список линейных моделей в R?

models=list() 
for (tag in tagnames){ 
    expr=paste0(tag," ~ .") 
    f=formula(expr) 
    models[tag]=lm(f,df) 
} 

Это код, который я написал; он фактически создает список, но, по-видимому, это список списков, которые не являются вызываемыми объектами (т. е. метод предсказания не работает над элементами списка).

Как я могу сделать элемент списков пригодным для использования в качестве реальных объектов lm?

+0

Не могли бы вы привести пример для 'tagnames'? – LAP

+0

tagname - это список строк, содержащий имена столбцов df. – lapally

+0

это должно быть в двойных скобках, так как это список: модели [[tag]] = lm (f, df) – Ansjovis86

ответ

1

Вы можете создать список ваших моделей с lapply:

models <- lapply(tagnames, function(x) lm(formula(paste0(x, " ~ .")), df)) 

и присвоить имена с

names(models) <- tagnames 

Затем вызовите predict на элементе списка:

predict(models[["name"]]) 
+0

также использовать 'переформулировать':' модели <- lapply (tagnames, function (x) lm (переформулировать ("., x), df)). – lmo

0

Вы может это:

models[[tag]]=lm(f,df) 


models=list() 
tagnames <- names(cars) 
for (tag in tagnames){ 
    expr=paste0(tag," ~ .") 
    f=formula(expr) 
    fit <- lm(f, data = cars) 
    models[[tag]]=fit 
}