R通过新元素扩展每个列表级别

R Extending each list level by new elements

我正在寻找一种将新列表 elements/levels 自动添加到现有列表的方法:

示例:

library(tidyverse)
x <- data.frame(id    = c(1,2,3),
                label = c("label 1", "label 2", "label 3"),
                category = c("cat 1", "cat 2", "cat 3"))

x_list <- x %>%
  as.list() %>%
  transpose()

names <- c("name 1", "name 2")

# Expected final format/output    
full_list <- list(list(name = names[1],
                       info = x_list),
                  list(name = names[2],
                       info = x_list))

所以我正在寻找一种方法来创建这个列表列表,在这里我将 names 向量中的所有值与 x_list 的“副本”“粘合在一起”。

我对列表不太熟悉,所以有点费力。我知道 purrr 包可以做一些很棒的事情,所以我 open/looking 转向 tidyverse 方法,尽管我也很乐意使用 base R。谢谢。

使用 map 遍历名称或使用相同的参数将 map 替换为 lapply,在这种情况下不需要包。

library(purrr)
result <- map(names, function(nm) list(name = nm, info = x_list))

identical(result, full_list)
## [1] TRUE