2015-03-29 2 views
7

In R, wenn ich nur eine Spalte aus einem Datenrahmen/Matrix auswählen, das Ergebnis wird ein Vektor und verlor die Spaltennamen, wie kann ich behalten die Spaltennamen? Zum Beispiel, wenn ich den folgenden Code ausführen,Behalten Spaltenname, wenn Sie eine Spalte aus einem Datenrahmen/Matrix in R

x <- matrix(1,3,3) 
colnames(x) <- c("test1","test2","test3") 
x[,1] 

werde ich bekommen

[1] 1 1 1 

Eigentlich möchte ich

 test1 
[1,]  1 
[2,]  1 
[3,]  1 

Der folgende Code erhalten geben Sie mir genau, was ich will Gibt es jedoch einen einfacheren Weg dies zu tun?

x <- matrix(1,3,3) 
colnames(x) <- c("test1","test2","test3") 
y <- as.matrix(x[,1]) 
colnames(y) <- colnames(x)[1] 
y 

Antwort

16

Verwenden Sie das drop Argument:

> x <- matrix(1,3,3) 
> colnames(x) <- c("test1","test2","test3") 
> x[,1, drop = FALSE] 
    test1 
[1,]  1 
[2,]  1 
[3,]  1 
6

Eine weitere Möglichkeit ist die Verwendung subset:

> subset(x, select = 1) 

    test1 
[1,]  1 
[2,]  1 
[3,]  1 
Verwandte Themen