r-在一个列表中变换多个向量



我正在寻找一种方法,将几个相同长度的向量转换为一个命名列表列表。

例如,如果我有矢量:

v1 <- c("a", "b", "c")
v2 <- c("x", "y", "z")

,列表应为:

list(
list(
name = "a",
value = "x"
),
list(
name = "b",
value = "y"
)
list(
name = "c",
value = "z"
)
)

当您为在一个请求中获取多条记录的API生成请求体时,这可能很有用。

这应该有效:

l <- mapply(
function(name, value) list(name = name, value = value),
v1, v2,
USE.NAMES = FALSE, 
SIMPLIFY = FALSE
)
str(l)
# List of 3
# $ :List of 2
#  ..$ name : chr "a"
#  ..$ value: chr "x"
# $ :List of 2
#  ..$ name : chr "b"
# ..$ value: chr "y"
# $ :List of 2
#  ..$ name : chr "c"
#  ..$ value: chr "z"

另一个选项是purrr中的pmap

purrr::pmap(list(name = v1, value = v2), list) 

最新更新