Dply: упорядочить столбцы по алфавиту в R

Если у меня есть большие столбцы DF (сотни и сотни) с разными столбцами col_names, случайным образом распределенные по алфавиту:

df.x <- data.frame(2:11, 1:10, rnorm(10))
colnames(df.x) <- c("ID", "string", "delta")

Как я могу упорядочить все данные (по вертикали) с помощью col_name в алфавитном порядке?

По сути, у меня есть сотни текстовых файлов CSV (sep = "|" ), которые мне нужно, чтобы прочитать их столбцы в один df, упорядочить эти столбцы в алфавитном порядке, а затем использовать некоторые другие функции dplyf, чтобы получить окончательный результат. Я все это понял, кроме как упорядочить столбцы по алфавиту. Я не хочу сортировать столбцы (вверх и вниз) по алфавиту, а скорее по фактической вертикальной ориентации col_names и их соответствующих данных. Аналогично вырезанию и вставке целых столбцов данных в Excel.

Например, я рассмотрел этот подход, но это "сортировка" строк в алфавитном порядке, что не то, что я ищу.

Как отсортировать данные по столбцам (столбцам)?

Спасибо!

Ответы

Ответ 1

Попробуйте это

df %>% select(noquote(order(colnames(df))))

или просто

df[,order(colnames(df))]

Ответ 2

Альтернативный способ сделать это в dplyr:

iris %>% 
  select(sort(current_vars()))

current_vars() возвращает имена столбцов, так что они сортируются, а select() будет принимать вектор имен столбцов.

Ответ 3

Почему бы просто:

sort(colnames(df.x))

[1] "delta"  "ID"     "string"