首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >通过使用map并选择tibble,从tibble生成一个tibble列表

通过使用map并选择tibble,从tibble生成一个tibble列表
EN

Stack Overflow用户
提问于 2019-12-23 06:07:30
回答 1查看 191关注 0票数 2

我想在下面的代码中生成tibble的列表。

代码语言:javascript
运行
复制
tbl = tibble(id=1:10, a = rnorm(10), b = rnorm(10))
tbl_list =  c("a", "b") %>% map(~ tbl %>% select(c("id", .)))

我想要的输出是

代码语言:javascript
运行
复制
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", .)必须计算列的位置或名称,而不是列表“,

因此,.似乎不是一个字符,而是一个列表。

你能告诉我如何避免这个错误吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-23 06:12:20

可以使用.x访问元素。

代码语言:javascript
运行
复制
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,因此它返回一个错误。使用.的一种方法是

代码语言:javascript
运行
复制
c("a", "b") %>% map(~select(tbl, c('id', .)))
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59450817

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档