извлеките имена столбцов в виде вектора

#r

Вопрос:

У меня есть фрейм данных df :

 x1  x2  x3  x4  x5
1   2   3   4   5
...
...
 

и я должен сделать эту операцию:

 pivot_data <- df %>%
  pivot_longer(cols = c("x1", "x2", "x3", "x4", "x5"), 
               names_to = "var", values_to = "score")
 

но вместо cols = c("x1", "x2", "x3", "x4", "x5") этого я хочу заменить его компактной функцией или чем-то еще, скажем, на случай, если у меня 1000 столбцов. Как это сделать?

Вот так?

cols = colnames(df)

Комментарии:

1. Напоминаем, что полезно заглядывать на ?pivot_longer страницу справки, если у вас есть вопросы по этой функции. Есть примеры, в которых используется everything() справка для указания всех столбцов.

Ответ №1:

Чтобы включить все столбцы, используйте everything() .

 library(tidyr)

pivot_data <- df %>%
  pivot_longer(cols = everything(), names_to = "var", values_to = "score")
 

Чтобы включить столбцы, начинающиеся с 'x' use starts_with .

 pivot_data <- df %>%
  pivot_longer(cols = starts_with('x'), names_to = "var", values_to = "score")
 

Чтобы включить столбцы, за которыми 'x' следует число, используйте matches

 pivot_data <- df %>%
  pivot_longer(cols = matches('x\d '), names_to = "var", values_to = "score")
 

Ответ №2:

Мы можем просто использовать gather

 library(tidyr)
pivot_data <- gather(df)