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

R通过新元素扩展每个列表级别,r,list,purrr,R,List,Purrr,我正在寻找一种方法来自动向现有列表添加新的列表元素/级别: 我的实际用例需要添加数千个元素,因此下面手动添加两个元素的示例不再可行 我需要一个列表,因为这是我试图访问的API所期望的格式 示例: library(tidyverse) x <- data.frame(id = c(1,2,3), label = c("label 1", "label 2", "label 3"),

我正在寻找一种方法来自动向现有列表添加新的列表元素/级别:

  • 我的实际用例需要添加数千个元素,因此下面手动添加两个元素的示例不再可行
  • 我需要一个列表,因为这是我试图访问的API所期望的格式
示例:

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))
库(tidyverse)
x%
转置()

名称使用map或使用相同的参数对名称进行迭代,在这种情况下,不需要包

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

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

结果强烈建议不要创建与基本R函数具有相同符号的变量(即
names()
)。确实,这只是为了说明目的,我没有花太多精力记住所有约定。需要记住的一点是,希望帮助您的人将输入示例数据。如果他们事后忘记取下它,那么麻烦就可能接踵而至。