Преобразование строки фрейма данных в имена столбцов

Есть ли быстрый способ (возможно, часть tidyverse API) превратить строку в имена столбцов для data.frame или tibble, что-то вроде tibble::column_to_rownames?

Я понимаю, что есть много способов сделать это, например. как-то неуклюже:

> df <- head(iris)
> 
> df %>%
+     set_colnames(magrittr::extract(., 1,)) %>%
+     magrittr::extract(-1,)
  5.1 3.5 1.4 0.2      1
2 4.9 3.0 1.4 0.2 setosa
3 4.7 3.2 1.3 0.2 setosa
4 4.6 3.1 1.5 0.2 setosa
5 5.0 3.6 1.4 0.2 setosa
6 5.4 3.9 1.7 0.4 setosa

person saladi    schedule 17.05.2017    source источник
comment
Используйте header = T при импорте данных. При необходимости используйте skip, чтобы сделать заголовок первой строкой.   -  person Gregor Thomas    schedule 17.05.2017
comment
В моем случае данные не считываются из файла, но это сработало бы, если бы   -  person saladi    schedule 04.06.2017


Ответы (2)


janitor::row_to_names() реализует это:

library(tidyverse)

iris %>%
  head() %>%
  janitor::row_to_names(1)
#>   5.1 3.5 1.4 0.2      1
#> 2 4.9 3.0 1.4 0.2 setosa
#> 3 4.7 3.2 1.3 0.2 setosa
#> 4 4.6 3.1 1.5 0.2 setosa
#> 5 5.0 3.6 1.4 0.2 setosa
#> 6 5.4 3.9 1.7 0.4 setosa

Создано 29 мая 2019 г. с помощью пакета reprex (v0.2.1)

person Community    schedule 29.05.2019

Ну можно просто: colnames(df) <- as.character(df[1, ])

И если вы хотите удалить эту первую строку: df <- df[-1,]

person cirofdo    schedule 17.05.2017