Создание имен переменной от изменения списков

Я пытаюсь создать имя переменной из списков в R, но борюсь!

То, что я в конечном счете хотел бы сделать, должно использовать ранее созданные списки, чтобы создать формулу для многократного линейного регресса, посредством чего каждая стоимость в рамках списка определит одну из объясняющих переменных формулы регресса.

Я начинаю с x списков переменных длин (GoodModels_LMi, куда я иду от 1 к x) и использованию каждый список, чтобы создать отдельную формулу.

for (i in 1:x){
    lm(formula created from appropriate list)
    i<-i+1
    }

Списки соответствуют переменным числам, которые будут выбраны из матрицы данных (AllData). Таким образом для пример, если:

GoodModels_LM1<-c(2,4,8)

Я хотел бы, чтобы моя формула регресса была:

AllData[,1]~AllData[,2]+AllData[,4]+AllData[,8]

Я пытался использовать as.formula() и паста (), чтобы достигнуть этого, однако, я не уверен, как создать вторую часть моей формулы.

as.formula(paste("AllData[,",i,"]~",paste(?????????)))

Я знаю, что это ниже не правильно, но так же близко, как я приехал:

paste("AllData[,",paste("GoodModels_LM",i,sep=""),"]",collapse="+")

Я также изучил, назначают (), но не имели успеха, поскольку аргумент стоимости совпал с x аргументом.

Большое спасибо за любую помощь с этим!

Оливия

1

1 ответы

Ваша формула должна содержать колонку имена , не фактические данные. Вот маленький демонстрационный пример, используя ирис .

Предположите, что вы хотите управлять регрессом, используя колонки 2, 4, и 5 из ирис . Во-первых, постройте формулу, используя пасту() :

vars <- c(2, 4, 5)
frm <- paste("Sepal.Length ~ ", paste(names(iris)[vars], collapse=" + "))
frm

"Sepal.Length ~  Sepal.Width + Petal.Width + Species"

Так, объект , кадр является последовательностью, содержащей формулу, которую можно передать к lm() :

lm(frm, iris)
Call:
lm(formula = frm, data = iris)

Coefficients:
      (Intercept)        Sepal.Width        Petal.Width  
           2.5211             0.6982             0.3716  
Speciesversicolor   Speciesvirginica  
           0.9881             1.2376  
2
добавлено
Спасибо за помощь. Я испытал это, но у меня все еще есть проблемы со второй частью моей формулы, которая теперь абсолютно чиста: кадр <-паста ("AllData [", я", [~ ", паста (имена (AllData [паста ("Go‌ ​ odModels_LM", я, сентябрь = "‌ ​";)], крах = "+")), Поскольку я = 1, это возвращается: [1] "AllData [1] ~"
добавлено автор Olivia, источник