En drei top-bewertet antwortet haben eine Schwäche.
Wenn Ihr Datenrahmen wie folgt aussieht
df <- data.frame(Time=c(1,2), In=c(2,3), Out=c(3,4), Files=c(4,5))
> df
Time In Out Files
1 1 2 3 4
2 2 3 4 5
dann ist es eine schlechte Lösung, die
> df2[,c(1,3,2,4)]
Es funktioniert, aber Sie haben gerade eine Abhängigkeit von der Reihenfolge der Spalten in Ihrer Eingabe eingeführt.
Diese Art der spröden Programmierung ist zu vermeiden.
Die explizite Benennung der Spalten ist eine bessere Lösung
data[,c("Time", "Out", "In", "Files")]
Und wenn Sie Ihren Code in einem allgemeineren Rahmen wiederverwenden wollen, können Sie einfach
out.column.name <- "Out"
in.column.name <- "In"
data[,c("Time", out.column.name, in.column.name, "Files")]
was auch ganz nett ist, weil es Literale vollständig isoliert. Im Gegensatz dazu, wenn Sie dplyr's select
data <- data %>% select(Time, out, In, Files)
dann würden Sie diejenigen, die Ihren Code später lesen, ein wenig in die Irre führen, auch sich selbst. Die Spaltennamen werden als Literale verwendet, ohne im Code als solche zu erscheinen.