krótkie wywołanie formuły dla wielu zmiennych podczas budowania modelu [duplikat]
To pytanie ma już odpowiedź tutaj:
- Wzór z dynamiczną liczbą zmiennych 5 odpowiedzi
Próbuję zbudować model regresji z lm (...). Mój dataset ma wiele funkcji (>50). Nie chcę pisać kodu jako lm(output~feature1+feature2+feature3+...+feature70)
. Zastanawiałem się, jaki jest krótki zapis ręki, aby napisać ten kod.
2 answers
Możesz użyć .
zgodnie z opisem na stronie pomocy dla formula
. .
oznacza "wszystkie kolumny nie będące inaczej we wzorze".
lm(output ~ ., data = myData)
.
Alternatywnie skonstruuj formułę ręcznie za pomocą paste
. Ten przykład pochodzi ze strony pomocy as.formula()
:
xnam <- paste("x", 1:25, sep="")
(fmla <- as.formula(paste("y ~ ", paste(xnam, collapse= "+"))))
Można następnie wstawić ten obiekt do funkcji regresji: lm(fmla, data = myData)
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-04-25 03:31:18
Można też spróbować takich rzeczy jak:
lm(output ~ myData[,2:71], data=myData)
Zakładając, że wyjściem jest pierwsza kolumna feature1: feature70 to kolejne 70 kolumn.
Lub
features <- paste("feature",1:70, sep="")
lm(output ~ myData[,features], data=myData)
Jest prawdopodobnie mądrzejszy, ponieważ nie ma znaczenia, gdzie wśród Twoich danych znajdują się kolumny.
Może powodować problemy, jeśli istnieje row 's usunięte Dla NA' s chociaż...
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-04-25 09:39:20