R purrr карта показывает имена столбцов в выводе - PullRequest
0 голосов
/ 17 декабря 2018

Я пытаюсь запустить purrr map для векторных входов, и в выходных данных я хотел бы, чтобы выходные столбцы имели содержательные имена.

x <- c("a", "b")
y <- "end."

map_dfc(x, function(x) paste("pre ", x, y))

names(x) <- x
map_dfc(x, function(x) paste(x, y))

Это ожидаемый вывод, которыйимеет имена столбцов a и b:

# A tibble: 1 x 2
# a      b     
# <chr>  <chr> 
# pre  a end. pre  b end.

Есть ли способ избежать необходимости запуска

names(x) <- x

то есть

x <- c("a", "b")
y <- "end."

map_dfc(x, function(x) paste("pre ", x, y))
# A tibble: 1 x 2
# a      b     
# <chr>  <chr> 

выходовdata.frame / tibble с уже прикрепленными именами столбцов?

Я часто использую карту и часто забываю, имеет ли входной вектор имена или нет.

Ответы [ 3 ]

0 голосов
/ 17 декабря 2018

В дополнение к комментарию @ RonakShah, предлагающему setNames(), вы можете справиться с этим без purrr::map():

paste("pre ", x, y) %>% 
  as.list() %>%
  as.data.frame(col.names = x, stringsAsFactors = F)
0 голосов
/ 01 мая 2019

Способ purrr заключается в использовании set_names, как в комментариях (хотя правильное значение setNames, похоже, заменяется на set_names в purrr):

map_dfc(set_names(x), function(x) paste("pre ", x, y))

с set_names вам не нужно указывать новые имена, если вы используете аргумент по умолчанию.

0 голосов
/ 17 декабря 2018

Одним из простых способов является именование элементов ввода.Это обычно приводит к более согласованному коду.

library(purrr)
x <- setNames(c("a", "b"), nm = c("a", "b"))
# x <- setNames(nm = c("a", "b")) # this is short cut of above
y <- "end."
map_dfc(x, function(x) paste("pre ", x, y))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...