У трьох найвищих відповідях є слабкі місця.
Якщо ваш кадр даних виглядає приблизно так
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)
також відомий як?'['