将原子向量转换为列表(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