使用purrr设置新创建的嵌套列表的名称

时间:2019-01-14 17:14:35

标签: r purrr

我正在尝试创建一个命名嵌套列表,例如:

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(.)))

3 个答案:

答案 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"