три с самым высоким рейтингом ответы имеют слабость.
Если ваш фрейм данных выглядит так
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
тогда это плохое решение для использования
> df2[,c(1,3,2,4)]
Он выполняет свою работу, но вы только что ввели зависимость от порядка столбцов в ваших входных данных.
Этого стиля хрупкого программирования следует избегать.
Явное именование столбцов является лучшим решением
data[,c("Time", "Out", "In", "Files")]
Кроме того, если вы намереваетесь использовать свой код в более общих настройках, вы можете просто
out.column.name <- "Out"
in.column.name <- "In"
data[,c("Time", out.column.name, in.column.name, "Files")]
, что тоже неплохо, потому что полностью изолирует литералы. Напротив, если вы используете dplyr select
data <- data %>% select(Time, out, In, Files)
тогда вы будете настраивать тех, кто будет читать ваш код позже, включая вас самих, для некоторого обмана. Имена столбцов используются в качестве литералов и не отображаются в коде как таковые.