为 purrr::map2() 的返回列表的内容赋予不同的对象名称
Giving a different object name for the content of the returned list of purrr::map2()
我正在尝试使用 purrr::map2()
采用两个不同的参数来进行某种计算。
purrr::map2(
.x = c(1, 3),
.y = c(10, 20),
function(.x, .y)rnorm(1, .x, .y)
)
purrr::map2()
returns 一个列表,但我想为列表中的每个内容分配一个不同的对象名称。例如,我想将第一个列表 [[1]] [1] -5.962716
命名为 model1
,将 [[2]] [1] -29.58825
命名为 model2
。换句话说,我想自动化对象命名,如 model* <- purrr::map2[[*]]
。有人能告诉我更好的方法吗?
> purrr::map2(
+ .x = c(1, 3),
+ .y = c(10, 20),
+ function(.x, .y)rnorm(1, .x, .y)
+ )
[[1]]
[1] -5.962716
[[2]]
[1] -29.58825
此问题类似于 ,但请注意,出于我的目的,我需要在单独的对象中计算结果。
您可以使用 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)
我正在尝试使用 purrr::map2()
采用两个不同的参数来进行某种计算。
purrr::map2(
.x = c(1, 3),
.y = c(10, 20),
function(.x, .y)rnorm(1, .x, .y)
)
purrr::map2()
returns 一个列表,但我想为列表中的每个内容分配一个不同的对象名称。例如,我想将第一个列表 [[1]] [1] -5.962716
命名为 model1
,将 [[2]] [1] -29.58825
命名为 model2
。换句话说,我想自动化对象命名,如 model* <- purrr::map2[[*]]
。有人能告诉我更好的方法吗?
> purrr::map2(
+ .x = c(1, 3),
+ .y = c(10, 20),
+ function(.x, .y)rnorm(1, .x, .y)
+ )
[[1]]
[1] -5.962716
[[2]]
[1] -29.58825
此问题类似于
您可以使用 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)