2013-06-29 7 views
6

Es ist möglich, eine Verknüpfung für die Formel zu verwenden, in lm()Verknüpfung mit lm() in R für die Formel

m <- matrix(rnorm(100), ncol=5) 
lm(m[,1] ~ m[,2:5] 

hier wäre es das gleiche wie

lm(m[,1] ~ m[,2] + m[,3] + m[,4] + m[,5] 

aber in dem Fall, wenn Variablen sind nicht auf dem gleichen Niveau (zumindest das ist meine Annahme für jetzt), das funktioniert nicht und ich bekomme den Fehler:

Daten (hm):

 N cor.distance switches time 
1 50 0.04707842  2 0.003 
2 100 -0.10769441  2 0.004 
3 200 -0.01278359  2 0.004 
4 300 0.04229509  5 0.008 
5 500 -0.04490092  6 0.010 
6 1000 0.01939561  4 0.007 

Gibt es eine Abkürzung noch möglich, zu vermeiden, die lange Formel zu schreiben?

Antwort

9

Versuchen lm(y ~ ., data) wo . bedeutet „jede andere Spalte in data neben y.

m <- matrix(rnorm(100), ncol =5) 
m <- as.data.frame(m) 
names(m) <- paste("m", 1:5, sep="") 
lm(m1 ~., data=m) 

Sie m zuweisen können nur die Spalten, die Sie als Prädiktoren

m <- m[ ,2:4] 
lm(m1 ~ ., data=m) 
+0

Eine wirklich nette Abkürzung! – PascalVKooten

+0

Danke. Ich habe eine zusätzliche (wahrscheinlich offensichtliche) Option hinzugefügt, wenn Sie eine große, aber richtige Teilmenge der Spalten auswählen möchten. Wenn dies Ihre Frage beantwortet, denken Sie bitte daran, sie als akzeptiert zu markieren. – Hugh

+0

wollte ich, warte aber darauf zu sehen, was andere sich einfallen lassen. – PascalVKooten

6

Es ist eine weitere Verknüpfung schließen für die Fälle, wenn sich eine abhängige Variable in der ersten Spalte befindet:

data <- data.frame(y = rnorm(10), x1 = rnorm(10), x2 = rnorm(10)) 
lm(data) 
+0

Auch sehr nett. – PascalVKooten

Verwandte Themen