问题描述
我正在尝试使用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)