Ich möchte einen Vektor aus einer Zeile eines Datenrahmens erstellen. Aber ich möchte keine Zeilen- und Spaltennamen haben müssen. Ich habe verschiedene Dinge ausprobiert ... hatte aber kein Glück.
Dies 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 so etwas aussieht:
> newV <- c( 1,2,2.6)
> newV
[1] 1.0 2.0 2.6
c(t(as.matrix(df)))
?Antworten:
Wenn Sie eine einzelne Zeile aus einem Datenrahmen extrahieren, erhalten Sie einen einzeiligen Datenrahmen. Konvertieren Sie es in einen numerischen Vektor:
Konvertiert, wie @Roland vorschlägt, den einzeiligen Datenrahmen
unlist(df[1,])
in einen numerischen Vektor, ohne die Namen zu löschen . Daherunname(unlist(df[1,]))
ist ein anderer, etwas expliziterer Weg, um zum gleichen Ergebnis zu gelangen.Wie @Josh unten kommentiert, benötigen Sie
as.character(df[1,])
stattdessen einen nicht vollständig numerischen Datenrahmen (alphabetisch, Faktor, gemischt ...) .quelle
identical(unlist(df[1,], use.names = FALSE), as.numeric(df[1,]))
(und übrigens ist df immer noch kein vernünftiger Name für einen data.frame ... ;-))Ich empfehle
unlist
, die Namen zu behalten.Wenn Sie keinen benannten Vektor möchten:
quelle
Wenn Sie nicht auf numerisch wechseln möchten, können Sie dies versuchen.
quelle
str(as.vector(t(df)[,1]))
istnum [1:3] 1 2 2.6
, dh der Code nicht die Ergebnisse in einen numerischen Vektor ... konvertierent(df)
Insbesondere wenn Sie R verwenden, wird der Datenrahmen zu einer Matrix gezwungen, in diesem Fall zu einer numerischen Matrix, da alle Elemente numerisch sind. Dann[,1]
extrahiert die erste Spalte (ein numerisches Vektor, da die redundante Dimension automatisch gelöscht wird).as.vector()
Lässt einfach die Namen fallen (was Sie auch tun könntenunname()
).unname(unlist(x))
Lösung etwas besser ist (effizienter und transparenter).as.vector(t(df)[,1])
Ich liebe es ! Genau das, was ich brauche!Hier ist eine
dplyr
basierte Option:quelle
Beachten Sie, dass Sie vorsichtig sein müssen, wenn Ihre Zeile einen Faktor enthält. Hier ist ein Beispiel:
Hier ist ein weiteres Beispiel (standardmäßig konvertiert data.frame () Zeichen in Faktoren)
Um dieses Verhalten zu verhindern, müssen Sie sich vor dem Extrahieren um den Faktor kümmern:
quelle
Spalten von Datenrahmen sind bereits Vektoren, Sie müssen sie nur herausziehen. Beachten Sie, dass Sie die gewünschte Spalte nach dem Komma und nicht davor platzieren:
Wenn Sie tatsächlich eine Reihe wollen, dann tun Sie, was Ben gesagt hat, und verwenden Sie die Wörter in Zukunft bitte richtig.
quelle