微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为purrr :: map2的返回列表的内容赋予不同的对象名称

如何解决为purrr :: map2的返回列表的内容赋予不同的对象名称

我正在尝试使用purrr::map2()进行两个特定参数的计算。

purrr::map2(
  .x = c(1,3),.y = c(10,20),function(.x,.y)rnorm(1,.x,.y)
)

purrr::map2()返回一个列表,但是我想为列表中的每个内容分配一个不同的对象名称。例如,我想将第一个列表[[1]] [1] -5.962716命名为model1,将[[2]] [1] -29.58825命名为model2。换句话说,我想自动将对象命名为model* <- purrr::map2[[*]]。有人可以告诉我更好的方法吗?

> purrr::map2(
+ .x = c(1,+ .y = c(10,+ function(.x,.y)
+ )
[[1]]
[1] -5.962716
[[2]]
[1] -29.58825

这个问题类似于this,但是请注意,出于我的目的,我需要在单独的对象中计算结果。

解决方法

您可以使用setNames为结果分配名称:

result <- purrr::map2(
  .x = c(1,3),.y = c(10,20),function(.x,.y)rnorm(1,.x,.y)
) %>%
  setNames(paste0('model',seq_along(.)))

现在您可以访问每个单独的对象,例如:

result$model1
#[1] 6.032297

如果希望将它们作为单独的对象而不是列表的一部分,则可以使用list2env

list2env(result,.GlobalEnv)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。