R语言如何按元素组合两个等长向量生成指定嵌套列表
实现方法
方法1:使用基础R的Map函数(最简便)
Map可以将指定函数按元素逐一应用到多个等长输入序列上,直接传入list作为映射函数即可实现需求:
a <- c(1:3) b <- c("a", "b", "c") goal <- unname(Map(list, a, b))
如果不需要保留默认生成的元素名,加unname就能完全和你给出的目标结构一致。
方法2:使用purrr包的map2函数
如果你习惯使用tidyverse生态的工具,用purrr::map2也可以实现相同效果:
library(purrr) goal <- map2(a, b, list)
方法3:基础for循环实现
如果需要更直观的逻辑,也可以用循环逐个赋值:
n <- length(a) goal <- vector("list", n) for (i in seq_len(n)) { goal[[i]] <- list(a[i], b[i]) }
之前的代码不符合预期的原因
list(as.list(a), as.list(b)):是把转成列表的a和b作为两个顶级元素放入新列表,不会按元素配对as.list(as.list(a), as.list(b)):as.list仅会处理第一个输入参数,后续参数会被忽略outer(a,b, paste):生成的是两个向量的笛卡尔积全组合,和逐元素配对的需求完全不符
内容的提问来源于stack exchange,提问作者qnp1521
相关产品推荐
相关产品推荐

