You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

R语言循环输出异常:为何无法生成1-100连续值?如何修复?

问题分析与解决方案

咱们先拆解一下你这段代码为啥会跳着输出——核心问题出在R语言的运算符优先级和你写的表达式逻辑上。

先看你循环里的输出语句:print(20*(i-1)+1:20*i)

R里的运算符优先级是有规矩的,其中:序列生成)的优先级比*(乘法)和+(加法)都高。所以你写的1:20*i会先执行1:20生成序列1,2,...,20,再乘以i,得到i,2i,...,20i;然后加上20*(i-1),最终的结果就变成了:

  • 当i=1时:0 + 1*1到20*1 → 1-20(这步是对的)
  • 当i=2时:20 + 2,4,...,40 → 22,24,...,60(这里就开始跳了)
  • 后续i=3、4、5的时候,结果会是43-63(步长3)、64-84(步长4)、85-105(步长5),完全不是你想要的连续1-100。

那该怎么改呢?你要的是每次循环生成20*(i-1)+120*i的连续序列,直接把这个区间用:生成就行,不用拆分计算。修改后的代码如下:

t <-5 
for (i in 1:t){ 
  print( (20*(i-1)+1) : (20*i) ) 
}

这样循环的时候:

  • i=1:1:20 → 1-20
  • i=2:21:40 →21-40
  • ...
  • i=5:81:100 →81-100

完美输出1到100的连续数字,分五次循环打印出来。另外如果想一次性输出1-100,其实不用循环,直接print(1:100)就行,但如果必须用循环分批次输出,上面的修改就完全没问题啦。

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

火山引擎 最新活动