gpt4 book ai didi

r - 管道 R 代码中的 setnames

转载 作者:行者123 更新时间:2023-12-04 14:09:49 28 4
gpt4 key购买 nike

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

  data <- input_vars %>% 
purrr::map(get_data)

names(data) <- input_vars

目前,我将一串变量传递给一个检索数据帧列表的函数。不幸的是,这个列表没有自动命名元素,但我之后“手动”添加它们。为了提高可读性,我想有如下内容
  data <- input_vars%>% 
purrr::map(get_comm_data) %>%
setnames(input_vars)

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

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

任何帮助表示赞赏!

最佳答案

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

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

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 keep names。

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

关于r - 管道 R 代码中的 setnames,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38852332/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com