TLDR:我需要一種簡單的方法來轉換c(a = 1, a = 3, a = 6)為list(c(a = 1), c(a = 3), c(a = 6)).
更長的版本:我正在使用函式purrr::accumulate(),其中每個元素的輸出是長度大于或等于 1 的原子向量。當長度為 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))
uj5u.com熱心網友回復:
你可以試試
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
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/466084.html
上一篇:如何壓縮多個但未知數量的串列?
