我想在下面的代码中生成tibble的列表。
tbl = tibble(id=1:10, a = rnorm(10), b = rnorm(10))
tbl_list = c("a", "b") %>% map(~ tbl %>% select(c("id", .)))我想要的输出是
tbl_list
[[1]]
# A tibble: 2 x 2
id a
<int> <dbl>
1 1 -0.704
2 2 -0.917
[[2]]
# A tibble: 2 x 2
id a
<int> <dbl>
1 1 -0.704
2 2 -0.917但是,它显示了错误消息,
"c("id", .)必须计算列的位置或名称,而不是列表“,
因此,.似乎不是一个字符,而是一个列表。
你能告诉我如何避免这个错误吗?
发布于 2019-12-23 06:12:20
可以使用.x访问元素。
library(tidyverse)
c("a", "b") %>% map(~ tbl %>% select(c("id", .x)))
#[[1]]
# A tibble: 10 x 2
# id a
# <int> <dbl>
# 1 1 1.42
# 2 2 1.51
# 3 3 -0.385
#...
#[[2]]
# A tibble: 10 x 2
# id b
# <int> <dbl>
# 1 1 1.42
# 2 2 0.100
# 3 3 1.28
#....您也可以使用.,但是在链操作中使用它时,.指的是链左侧的对象,在本例中是tbl,因此它返回一个错误。使用.的一种方法是
c("a", "b") %>% map(~select(tbl, c('id', .)))https://stackoverflow.com/questions/59450817
复制相似问题