首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >流水线R码中的集合名

流水线R码中的集合名
EN

Stack Overflow用户
提问于 2016-08-09 13:35:33
回答 1查看 3.1K关注 0票数 7

我想知道是否可以在管道代码的末尾设置列表元素的名称。

代码语言:javascript
复制
  data <- input_vars %>% 
    purrr::map(get_data)

  names(data) <- input_vars

目前,我将一个变量字符串传递到一个函数中,该函数检索一个数据文件列表。不幸的是,这个列表并不自动具有命名元素,但我在后面“手动”添加它们。为了提高可读性,我想要以下内容

代码语言:javascript
复制
  data <- input_vars%>% 
    purrr::map(get_comm_data) %>%
    setnames(input_vars)

但是,这给了我以下错误:setname(.,input_vars)中的错误:X不是data.table或data.frame

有人有一个优雅的解决方案吗?

任何帮助都是非常感谢的!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-09 13:47:08

若要在管道中设置对象的名称,请使用setNamespurrr::set_names

代码语言:javascript
复制
1:3 %>%
  purrr::map(~ rnorm(5, .x)) %>%
  purrr::set_names(paste0('V', 1:3))
#> $V1
#> [1] 1.4101568 2.0189473 1.0042691 1.4561920 0.8683156
#> 
#> $V2
#> [1] 2.0577889 2.4805984 1.4519552 0.9438844 0.4097615
#> 
#> $V3
#> [1] 0.4065113 4.0044538 2.8644864 2.4632038 4.0581380
代码语言:javascript
复制
1:3 %>%
  purrr::map(~ rnorm(5, .x)) %>%
  setNames(paste0('V', 1:3))
#> $V1
#> [1] 0.52503624 0.69096126 0.08765667 0.97904520 0.29317579
#> 
#> $V2
#> [1] 2.561081 1.535689 1.681768 2.739482 1.842833
#> 
#> $V3
#> [1] 2.619798 1.341227 2.897310 2.860252 1.664778

使用purrr::map,您还可以将input_vars命名为map保持名称。

代码语言:javascript
复制
c(V1 = 1, V2 = 2, V3 = 3) %>%
  purrr::map(~ rnorm(5, .x))
#> $V1
#> [1]  1.74474389  1.69347668 -1.03898393  0.09779935  0.95341349
#> 
#> $V2
#> [1] 1.5993430 0.8684279 1.6690726 2.9890697 3.8602331
#> 
#> $V3
#> [1] 3.453653 3.392207 2.734143 1.256568 3.692433
票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38852332

复制
相关文章

相似问题

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