R通过新元素扩展每个列表级别
R Extending each list level by new elements
我正在寻找一种将新列表 elements/levels 自动添加到现有列表的方法:
- 我的实际用例有数千个元素要添加,因此下面添加两个元素的手动示例不再可行,
- 我需要一个列表,因为这是我正在尝试访问的 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))
所以我正在寻找一种方法来创建这个列表列表,在这里我将 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
我正在寻找一种将新列表 elements/levels 自动添加到现有列表的方法:
- 我的实际用例有数千个元素要添加,因此下面添加两个元素的手动示例不再可行,
- 我需要一个列表,因为这是我正在尝试访问的 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))
所以我正在寻找一种方法来创建这个列表列表,在这里我将 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