Использование номеров столбцов для зависимых переменных в функциях регрессии - PullRequest
0 голосов
/ 26 апреля 2019

Я застрял с этой проблемой программирования.

Я хочу создать дерево регрессии для семи столбцов в algae кадре данных, от 12 до 18, но я хочу использовать цикл, чтобы не делать одно и то же вручную семь раз. У меня есть следующий код:

library(DMwR)
data(algae)
algae<-algae[-manyNAs(algae),]
algae<-knnImputation(algae,k=10,meth="weighAvg")

library(rpart)

algae.rpart<-list()
for(i in 1:7){
  algae.rpart[[i]]<-rpart(algae[i+11]~.,data=algae)
}
algae.rpart

И я получаю следующую ошибку:

Error in model.frame.default(formula = algae[i + 11] ~ ., data = algae,  : 
  invalid type (list) for variable 'algae[i + 11]'

Как я могу решить эту проблему?

1 Ответ

1 голос
/ 26 апреля 2019

Просто добавьте запятую здесь: algae[,i + 11]

Почему это работает?См. Здесь:

> class(algae[1])
[1] "data.frame"
> class(algae[,1])
[1] "factor"

algae[1] - это список (фрейм данных - это особый случай списка), а algae[,1] - фактор-переменная.

Часто в учебниках (например, Хэдли«Расширенный R» Уикхэма) вы можете найти параллель между списком (или фреймом данных) и поездом: если list - это поезд, list[1] - его первая машина (очень короткий поезд, но все еще поезд), в то время как list[,1] это его груз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...