У трех самых популярных ответов есть слабость.
Если ваш фрейм данных выглядит так
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")]
что также довольно приятно, потому что полностью изолирует литералы. Напротив, если вы используете dplyrselect
data <- data %>% select(Time, out, In, Files)
тогда вы будете настраивать тех, кто будет читать ваш код позже, включая вас самих, для некоторого обмана. Имена столбцов используются как литералы, но не отображаются в коде как таковые.
help(Extract)
также известный как?'['