2016-03-21 9 views
1

Wenn dem folgenden R-Code ausgeführt wird:R: Umbenennen, wenn model.matrix mit

y <- rnorm(100) 
B <- matrix(rnorm(200), ncol=2) 
colnames(B) <- c("x1", "x2") 
A <- model.matrix(y~B) 
colnames(A) 

model.matrix die Variablennamen fügt das Präfix "B" in der Matrix A. Wie kann ich dieses Verhalten vermeiden (oder benennen Sie es um, aber in einer sehr allgemeinen Einstellung, zB innerhalb einer Funktion mit benutzerdefinierter Formel)?

+0

verwenden Wenn mich nicht alles täuscht, wird die „B“ von dem Objekt aufgenommen in 'model.matrix' verwendet wird, so nehme ich an Sie, diese Informationen zu' gsub' es verwenden können wenn ich Das ist Teil einer Funktion ....? – A5C1D2H2I1M1N2O1R2T1

Antwort

0

Wir können sub verwenden, um das erste Zeichen in den Spaltennamen zu entfernen.

colnames(A)[-1] <- sub("^.", "", colnames(A)[-1]) 

Oder die Spaltennamen gesetzt, indem sie mit denen von ‚B‘ verketten

colnames(A) <- c(colnames(A)[1], colnames(B)) 

Eine weitere Option, ohne die sub Verwendung wäre eine data.frame mit ‚y‘ zu erstellen und ‚B‘ Matrix und dann y ~.

A <- model.matrix(y~., data=data.frame(y, B)) 
colnames(A) 
#[1] "(Intercept)" "x1"   "x2"  
+0

Wenn das Objekt "B" stattdessen "akrun" genannt würde, wären die resultierenden Spaltennamen "akrunx1" und "akrunx2". Ich denke, das könnte erweiterbar gemacht werden. – A5C1D2H2I1M1N2O1R2T1

+1

Vielen Dank für Ihre Antworten. Es ist geplant, es mit A <- model.matrix (Formel) zu benennen. Wenn Formel als "y ~ B" definiert ist, tritt das Problem auf, in anderen Fällen jedoch nicht. – Martin

Verwandte Themen