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

求基于基础R函数的无循环序列生成方法:输入2:5生成指定向量

解决方案

这问题挺有意思的,刚好可以用基础R的函数组合来解决,完全不用for循环。这里有个简洁的实现方式:

my_seq <- function(x) {
  unlist(lapply(x, function(i) i:max(x)))
}

代码解释

  • 函数接收一个向量(比如2:5)作为输入参数x。
  • lapply(x, function(i) i:max(x)):遍历输入向量中的每个元素i,为每个i生成从i到输入向量最大值的子序列。这一步会返回一个列表,每个列表元素对应一个子序列。
  • unlist():把列表中的所有子序列展开合并成一个单一的向量,就是你需要的结果。

测试验证

运行以下代码就能得到你想要的输出:

# 测试输入2:5
my_seq(2:5)
# 输出结果:2 3 4 5 3 4 5 4 5 5

补充优化(可选)

如果你想让代码更高效,可以用vapply()替代lapply(),提前指定输出的类型,避免类型推断的开销:

my_seq <- function(x) {
  unlist(vapply(x, function(i) i:max(x), FUN.VALUE = integer(max(x) - i + 1)))
}

你提到seq()的from参数不支持向量输入,这个限制确实存在,但通过lapply()逐个处理每个起始值,就能完美绕开这个问题,同时保持代码的优雅简洁。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 10:31:14