Frage Wandle eine Zeile eines Datenrahmens in Vektor um


Ich möchte einen Vektor aus einer Reihe eines Datenrahmens erstellen. Aber ich möchte keine Zeilen- und Spaltennamen haben. Ich habe mehrere Dinge ausprobiert ... aber ich hatte kein Glück.

Das ist mein Datenrahmen:

> df <- data.frame(a=c(1,2,4,2),b=c(2,6,2,1),c=c(2.6,8.2,7.5,3))
> df
  a b   c
1 1 2 2.6
2 2 6 8.2
3 4 2 7.5
4 2 1 3.0

Ich habe es versucht:

> newV <- as.vector(df[1,])
> newV
  a b   c
1 1 2 2.6

Aber ich möchte wirklich, dass etwas so aussieht:

> newV <- c( 1,2,2.6)
> newV
[1] 1.0 2.0 2.6

Jede Hilfe, sehr geschätzt.


75
2018-01-23 16:39


Ursprung


Antworten:


Wenn Sie eine einzelne Zeile aus einem Datenrahmen extrahieren, erhalten Sie einen einreihigen Datenrahmen. Konvertiere es in einen numerischen Vektor:

as.numeric(df[1,])

Wie @Roland es vorschlägt, unlist(df[1,]) wandelt den einreihigen Datenrahmen in einen numerischen Vektor um, ohne die Namen zu löschen. Deshalb unname(unlist(df[1,])) ist ein weiterer, etwas expliziterer Weg, um zum selben Ergebnis zu kommen.


110
2018-01-23 16:42



ich empfehle unlist, die die Namen behält.

unlist(df[1,])
  a   b   c 
1.0 2.0 2.6 

is.vector(unlist(df[1,]))
[1] TRUE

Wenn Sie keinen benannten Vektor möchten:

unname(unlist(df[1,]))
[1] 1.0 2.0 2.6

33
2018-01-23 16:49



Wenn Sie nicht zu numerisch wechseln möchten, können Sie dies versuchen.

> as.vector(t(df)[,1])
[1] 1.0 2.0 2.6

5
2018-01-23 16:47



Spalten von Datenrahmen sind bereits Vektoren, Sie müssen sie nur herausziehen. Beachten Sie, dass Sie die gewünschte Spalte nach dem Komma platzieren, nicht davor:

> newV <- df[,1]
> newV
[1] 1 2 4 2

Wenn Sie tatsächlich eine Reihe wollen, dann tun Sie, was Ben gesagt hat und bitte verwenden Sie Wörter in der Zukunft richtig.


-2
2018-01-23 16:42