能否使用seq()函数生成步长随索引递增的指定范围向量?
解答
首先给出结论:不能直接用seq()实现你的需求。因为seq()的by参数只能是固定的单个值(或长度为1的向量),没办法让步长随每一步动态递增。
实现目标序列的方法
你的目标序列逻辑是:初始值为13,之后每个元素 = 前一个元素 + 前一个元素的索引(从1开始计数)。换个角度看,这个序列可以通过初始值加上累积递增的步长来生成,具体代码如下:
# 生成符合要求的向量 target_vec <- 13 + cumsum(c(0, 1:11)) # 打印验证结果 cat(target_vec, sep = ", ")
运行这段代码会输出你预期的结果:13, 14, 16, 19, 23, 28, 34, 41, 49, 58, 68, 79
如果需要更灵活地控制终止值(比如确保最后一个元素不超过79),也可以用循环逐步生成,但上面的累积求和方式是最简洁高效的。
内容的提问来源于stack exchange,提问作者TimFabregas
相关产品推荐
相关产品推荐

