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