为什么“ map2_chr”有时会返回“字符(0)”?

时间:2019-06-11 05:35:20

标签: r purrr

我需要能够使用列表中的键。对于purrr,我使用map2系列(此处为map2_chr)并使用names(.)来获取密钥。 但是,当原始列表只有1个元素长且没有键时,map2_chr将发回一个空向量。

我在purrr仓库中打开了一个问题,因为我认为这可能是一个错误。

library(purrr)
alist <- list("bla") 
alist %>% 
  map_chr(~ .)
#> [1] "bla"
alist %>% 
  map2_chr(.y = NULL, ~ .x)
#> character(0)
alist %>% 
  map2_chr(.y = alist, ~ .x)
#> [1] "bla"

我正在寻找一种方法,当"bla"的值为.y时获得NULL事件。

1 个答案:

答案 0 :(得分:1)

我怀疑NULL是否可行,因为

length(NULL)
#[1] 0

来自?map2

  

如果所有输入的长度均为0,则输出的长度为0。如果任何输入的长度为1,则将其循环使用最长的长度。

因此,您得到character(0)

如果一个输入的长度为1,则将其回收

alist %>% map2_chr(.y = 1:5, ~ .x)
#[1] "bla" "bla" "bla" "bla" "bla"