2012-05-24 3 views
10

Ich habe einen Datenrahmen wie folgt aus:
df = data.frame(a=1:3, b=2:4, c=3:5)Prevent automatische Konvertierung von einzelnen Spalte zu Vektor

Ich Auswählen von Spalten aus diesem Datenrahmen etwas mit ähnlich:
df[, c(T, F, T)]

Dies funktioniert wie solange mindestens zwei Spalten zurückgegeben werden müssen; aber, wenn ich das zum Beispiel mache:
df[, c(T, F, F)]

... Ich bekomme plötzlich nur einen Vektor anstelle eines data.frame.

Normalerweise wäre das in Ordnung (oder sogar erwünscht), aber da ich das Ergebnis zu einem späteren Zeitpunkt ein data.frame sein muss, durcheinander bringt dies meine Skripte völlig durcheinander.

Gibt es eine Möglichkeit, dass ich verhindern kann, dass R diese automatische Konvertierung in einen Vektor für Einzelspalten-Selektionen durchführt?

+0

seien Sie vorsichtig mit den 'T' /' F' Tastenkombinationen für 'TRUE' /' FALSE' - wenn Sie jemals 'T' oder' F' als eine benutzerdefinierte verwenden Variable Dinge können sehr verwirrend werden ... –

Antwort

18

Dieser ist ziemlich einfach. Hängen Sie , drop = FALSE an Ihre Untergruppe an.

z.

df[, c(T, F, F), drop = FALSE]

funktioniert auch für Matrizen.

1

Auch ohne das Komma, d. H. Df [c (T, F, F)], gibt einen Datenrahmen zurück, aber es klingt wie Sie Fälle haben, in denen der neue Datenrahmen eine oder mehrere Spalten haben kann. Verwenden Sie also die Drop-Option über

Verwandte Themen