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

如何用rep()函数根据向量元素差值重复对应元素(免for循环)

解决方案

直接用diff()函数计算相邻元素的差值,再给最后一个元素补一个重复次数1,就能配合rep()完成需求,完全不用循环:

x <- c(1, 4, 7, 9)
# 计算每个元素的重复次数:相邻元素差 + 最后一个元素的1次
times <- c(diff(x), 1)
# 生成结果
result <- rep(x, times = times)
result
# 输出:[1] 1 1 1 4 4 4 7 7 9

原理说明

  • diff(x)会返回向量中相邻元素的差值,也就是4-1=3、7-4=3、9-7=2,得到c(3,3,2)
  • 因为最后一个元素9不需要基于下一个元素计算次数,直接保留1次,所以把1追加到差值向量末尾,得到完整的重复次数向量c(3,3,2,1)
  • rep(x, times)会按照times中对应位置的次数,重复x里的每个元素

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 18:48:08