将原子向量转换为列表(purrr::simplify() 的倒数)
Transform an atomic vector to list (inverse of purrr::simplify())
TLDR:
我需要一种简单的方法将 c(a = 1, a = 3, a = 6)
转换为 list(c(a = 1), c(a = 3), c(a = 6))
.
更长的版本:
我正在使用函数 purrr::accumulate()
,其中 each 元素的输出是长度大于或等于 1 的原子向量。当长度为一时,purrr::accumulate()
将 整个 输出简化为原子向量,而不是列表。
有没有一种简单的方法可以撤消或避免这种情况?不幸的是,as.list()
没有给我想要的东西。
简单的例子来说明:
purrr::accumulate(2:3, `+`, .init = c(a=1, b=2))
给我
list(c(a = 1, b = 2), c(a = 3, b = 4), c(a = 6, b = 7))
符合预期。然而,
purrr::accumulate(2:3, `+`, .init = c(a=1))
给我
c(a = 1, a = 3, a = 6)
当我想要
list(c(a = 1), c(a = 3), c(a = 6))
你可以试试
c(a = 1, a = 3, a = 6) %>% map(~setNames(.x, nm = "a"))
$a
a
1
$a
a
3
$a
a
6
或者您也可以使用 set_names()
删除列表名称
c(a = 1, a = 3, a = 6) %>% map(~setNames(.x, nm = "a")) %>%
set_names("")
[[1]]
a
1
[[2]]
a
3
[[3]]
a
6
TLDR:
我需要一种简单的方法将 c(a = 1, a = 3, a = 6)
转换为 list(c(a = 1), c(a = 3), c(a = 6))
.
更长的版本:
我正在使用函数 purrr::accumulate()
,其中 each 元素的输出是长度大于或等于 1 的原子向量。当长度为一时,purrr::accumulate()
将 整个 输出简化为原子向量,而不是列表。
有没有一种简单的方法可以撤消或避免这种情况?不幸的是,as.list()
没有给我想要的东西。
简单的例子来说明:
purrr::accumulate(2:3, `+`, .init = c(a=1, b=2))
给我
list(c(a = 1, b = 2), c(a = 3, b = 4), c(a = 6, b = 7))
符合预期。然而,
purrr::accumulate(2:3, `+`, .init = c(a=1))
给我
c(a = 1, a = 3, a = 6)
当我想要
list(c(a = 1), c(a = 3), c(a = 6))
你可以试试
c(a = 1, a = 3, a = 6) %>% map(~setNames(.x, nm = "a"))
$a
a
1
$a
a
3
$a
a
6
或者您也可以使用 set_names()
c(a = 1, a = 3, a = 6) %>% map(~setNames(.x, nm = "a")) %>%
set_names("")
[[1]]
a
1
[[2]]
a
3
[[3]]
a
6