Ich beobachte seltsame Verhaltensweisen bei der Bestellung eines Datenrahmens nach Spaltennamen. Wenn der Datenrahmen nur eine Spalte hat, verliert er bei der Sortierung grundsätzlich den Spaltennamen, was bei mehreren Spalten nicht der Fall ist. Dies ist ein Beispielcode:Bestellung eines Datenrahmens in R nach Spalten
df <- data.frame(c("1", "2", "3"), c("4", "5", "6"), c("7", "8", "9"))
colnames(df) <- c("A", "C", "B")
df <- data.frame(df[,order(colnames(df))])
print(colnames(df))
df <- data.frame(c("1", "2", "3"))
colnames(df) <- c("A")
df <- data.frame(df[,order(colnames(df))])
print(colnames(df))
Im ersten Teil des Codes, Datenrahmen df
, bewahrt seine Spalten, aber im zweiten Teil verliert er die Spaltennamen.
Offensichtlich kann man nach der Anzahl der Spalten suchen und ihren Namen zurückholen, wenn es nur eine Spalte gibt, aber es klingt wie eine schlechte Übung.
Kennt jemand einen schöneren Weg, um das Problem zu behandeln?
gut alt 'Drop' Problem. Verwenden Sie: 'data.frame (df [, order (Spaltennamen (df)), drop = F])' –
Eine bessere Methode in diesem Fall ist die Verwendung der Listensyntax: 'df [order (Spaltennamen (df))]' behält die Listenstruktur (und die zugehörigen Namen), während 'df [order (Spaltennamen (df))]] die Listenstruktur in der Instanz einer einzelnen Spalte data.frame ablegt. – lmo