我正在尝试创建一个命名嵌套列表,例如:
list(
list(id = 1, name = "Abbie"),
list(id = 2, name = "Benjamin")
# ... more list statements here
)
我已经使用purrr::map2
创建了嵌套列表结构:
c("Abbie", "Benjamin") %>%
map2(seq(.), ., list)
但是,我如何用purrr命名列表?
注意:在此question中,我尝试了以下操作,但并没有满足我的要求:
c("Abbie", "Benjamin") %>%
map2(seq(.), ., list) %>%
set_names(paste0("ID", seq(.)))
答案 0 :(得分:3)
这是创建嵌套列表的另一种方法
library(purrr)
c("Abbie", "Benjamin") %>%
list(id = seq_along(.), name =.) %>%
transpose
#[[1]]
#[[1]]$id
#[1] 1
#[[1]]$name
#[1] "Abbie"
#[[2]]
#[[2]]$id
#[1] 2
#[[2]]$name
#[1] "Benjamin"
答案 1 :(得分:2)
再使用convert
,因为要设置的名称是内部列表。如果没有,map()
将设置外部列表的名称。
set_names()
答案 2 :(得分:0)
我会使用purr::imap
来做到这一点:
library(purr)
c("Abbie", "Benjamin") %>% imap(~list(id=.y,name=.x))
# [[1]]
# [[1]]$id
# [1] 1
#
# [[1]]$name
# [1] "Abbie"
#
#
# [[2]]
# [[2]]$id
# [1] 2
#
# [[2]]$name
# [1] "Benjamin"