列表列映射的意外输出

Unexpected output from map of list column

下面是我的代码的输出,也是我想要的输出。我只希望打印出每个字符向量,但它会打印两个字符向量,然后还会打印出整个列表列。为什么会发生这种情况,我应该更改什么以获得我想要的输出?

library(tidyverse)

data <- tribble(
  ~x,  ~y,
  "a", rep("yes", 10),
  "b", rep("no", 10)
)

map(data$y, ~ print(.x))
#>  [1] "yes" "yes" "yes" "yes" "yes" "yes" "yes" "yes" "yes" "yes"
#>  [1] "no" "no" "no" "no" "no" "no" "no" "no" "no" "no"
#> [[1]]
#>  [1] "yes" "yes" "yes" "yes" "yes" "yes" "yes" "yes" "yes" "yes"
#> 
#> [[2]]
#>  [1] "no" "no" "no" "no" "no" "no" "no" "no" "no" "no"

期望的输出:

#>  [1] "yes" "yes" "yes" "yes" "yes" "yes" "yes" "yes" "yes" "yes"
#>  [1] "no" "no" "no" "no" "no" "no" "no" "no" "no" "no"

reprex package (v1.0.0)

于 2021-02-14 创建

lapply/map 总是 return 一个值。所以你告诉它 print 值,它也 returns 传递的值,所以你得到两个输出。所以你可以只使用 .x 来获得其中之一。

purrr::map(data$y, ~ .x)

相同
data$y