2013-06-10 15 views
11

Ich habe diesen Namen Vektor:Convert namens Vektor Dataframe

x <- 1:5 

names(x) <- c('0 15', '1 15', '2 15', '0 16', '1 16') 

Was ist der beste Weg x dieser Datenrahmen zu konvertieren:

xDF <- data.frame(V1 = c(0, 1, 2, 0, 1), V2 = c(15, 15, 15, 16, 16), V3 = 1:5) 

Antwort

14

Hier ist eine sehr direkte Ansprache:

cbind(read.table(text = names(x)), x) 
    V1 V2 x 
0 15 0 15 1 
1 15 1 15 2 
2 15 2 15 3 
0 16 0 16 4 
1 16 1 16 5 

In diesem Fall wird read.table automatisch kümmern uns Ihre names(x) Komponente der Aufteilung (standardmäßig durch den Raum, aber auch andere Zeichen bei Bedarf angegeben werden könnte).

Sie können auch den Namen für x direkt in cbind:

cbind(read.table(text = names(x)), V3 = x) 

Ein direkterer Ansatz wäre cSplit von meiner "splitstackshape" Paket zu verwenden, wie folgt aus:

library(splitstackshape) 
cSplit(stack(x), "ind", " ") 
4

ich so etwas tun würde:

res = data.frame(cbind(do.call('rbind', strsplit(names(x), " ")), x)) 
res 
    V1 V2 x 
0 15 0 15 1 
1 15 1 15 2 
2 15 2 15 3 
0 16 0 16 4 
1 16 1 16 5 

Denken Sie daran, dass die Datentypen noch nicht korrekt sind, die ersten beiden Spalten sind factor 's.