purr :: pmap不保留参数名称

时间:2018-10-07 17:00:06

标签: r tidyverse purrr

我正在尝试执行一个函数,该函数使用带有purrr::pmap的传递参数的名称。与purrr::map(请参阅下文)不同,pmap不会保留这些名称。以下MWE捕获了该问题:

print_names <- function(x) {
  print(names(x))
}

namedVec <- c(nameA = "valueA")
purrr::map(list(namedVec), print_names)
# [1] "nameA"
# [[1]]
# [1] "nameA"
purrr::pmap(list(namedVec), print_names)
# NULL
# $nameA
# NULL

1 个答案:

答案 0 :(得分:2)

请注意,在pmap中,.l参数必须是列出的参数的列表,但是在函数调用中,它只是一个列表:

print_names <- function(x) {
  print(names(x))
}

namedVec <- c(nameA = "valueA")

purrr::map(list(namedVec), ~print_names(.))
#> [1] "nameA"
#> [[1]]
#> [1] "nameA"

purrr::pmap(list(list(namedVec)), print_names)
#> [1] "nameA"
#> [[1]]
#> [1] "nameA"

reprex package(v0.2.1)于2018-10-07创建