如何在R语言中合并列表内的等长度向量
解决方法:按向量长度分组合并
我来帮你搞定这个需求!核心思路是先把列表里的NULL去掉,再按向量长度分组,最后对每个分组用cbind合并。下面是具体的R代码步骤:
1. 定义你的向量列表
首先把你给出的列表用R代码表示出来(方便后续操作):
vec_list <- list( c("X1", "X2", "N", "N"), c("X1", "X2", "N", "C"), c("X1", "X2", "S", "S"), c("X1", "X2", "X3", "S", "S", "U"), NULL, c("X1", "X2", "S", "N"), c("X1", "X2", "X3", "S", "S", "S"), c("X1", "X2", "S", "N"), c("X1", "X2", "X3", "X4", "X5", "X6", "F", "S", "S", "S", "N", "C") )
2. 过滤NULL元素
因为NULL没法参与合并,所以先把它们从列表里移除:
filtered_list <- vec_list[!sapply(vec_list, is.null)]
3. 按向量长度分组
用split函数把列表按每个向量的长度分成不同的组:
grouped_list <- split(filtered_list, sapply(filtered_list, length))
4. 合并同长度的向量
对每个分组,用do.call(cbind, ...)来合并组内的所有向量:
result <- lapply(grouped_list, function(group) { do.call(cbind, group) })
查看结果
比如对应原列表里[[4]]和[[7]]的长度为6的合并结果,你可以这样查看:
result[["6"]]
输出会是:
[,1] [,2] [1,] "X1" "X1" [2,] "X2" "X2" [3,] "X3" "X3" [4,] "S" "S" [5,] "S" "S" [6,] "U" "S"
而原列表里长度为4的5个向量合并后会是4行5列的矩阵,完全符合你想要的格式。
内容的提问来源于stack exchange,提问作者Satria Arief Wicaksono Bakri
相关产品推荐
相关产品推荐

