You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何便捷合并不同长度的R语言向量?

解决方案

你可以通过以下几种方式将列表形式的结果合并为单一向量:

方法1:使用基础R的unlist()函数

sapply在处理不同长度的返回值时会返回列表,unlist()可以将列表的所有元素按顺序展平为一个单一向量:

set.seed(123)
# 先生成分段的列表
vec_list <- sapply(c(5,2,3), function(n) rnorm(n,0,1))
# 展平为单一向量
vec <- unlist(vec_list)

# 输出结果
vec

运行后得到的结果就是你需要的形式:

[1] -0.5604756 -0.2301775  1.5587083  0.0705084  0.1292877  1.7150650  0.4609162 -1.2650612 -0.6868529 -0.4456620

方法2:使用tidyverse工具包的flatten_dbl()

如果你习惯使用tidyverse生态,可以用purrr包的flatten_dbl()函数,它会明确将列表转换为数值型向量:

library(purrr)
set.seed(123)

vec <- sapply(c(5,2,3), function(n) rnorm(n,0,1)) %>% flatten_dbl()

补充说明

当sapply的每个调用返回长度不同的向量时,它无法将结果简化为矩阵或数组,因此默认返回列表。而unlist()或flatten_dbl()的作用就是将列表中嵌套的向量元素按顺序拼接成一个一维向量。

内容的提问来源于stack exchange,提问作者T Richard

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 17:42:35