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

如何在R中实现整数向量的连续累积拼接?

解决R语言整数向量连续累积拼接问题

错误原因分析

你编写的函数出错是因为使用paste()处理向量时的特性:当output[[i-1]]是长度大于1的向量时,paste(output[[i-1]], vec[i])会将向量的每个元素分别与vec[i]拼接,生成多个字符串(比如output[[2]]是c(1,3),和vec[3]=2拼接会得到c("1 2", "3 2")),后续strsplit只取第一个拆分结果,导致丢失了中间元素,最终得到错误输出。

正确解法

方法1:修改原有循环函数

直接使用c()合并前一个累积向量与当前元素,不需要转字符串再拆分,这是最直接的修复方式:

myfun <- function(vec){
  output = vector("list", length(vec))
  output[[1]] = vec[1]
  for(i in 2:length(vec)){
    # 直接合并向量,替代paste+strsplit的错误写法
    output[[i]] = c(output[[i - 1]], vec[i])
  }
  return(output)
}

# 测试
vec <- c(1, 3, 2, 37)
myfun(vec)

执行后会得到预期的输出:

[[1]]
[1] 1

[[2]]
[1] 1 3

[[3]]
[1] 1 3 2

[[4]]
[1] 1 3 2 37

方法2:更简洁的R风格写法

不用手动写循环,用lapply结合序列索引直接生成结果,代码更简洁:

vec <- c(1, 3, 2, 37)
output <- lapply(seq_along(vec), function(x) vec[1:x])

执行后同样得到目标列表。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 13:07:25