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

R语言循环中仅打印每第5次输出?我的写法是否正确?

关于R语言循环间隔打印的代码疑问

我正在使用R编程语言,现有如下循环代码:

for (i in 1:100) 
{
num_i = as.integer(rnorm(1,100,100))
print(num_i)
}

该循环会生成100个符合正态分布的整数并逐个打印。我希望仅打印循环中每第5次的输出(即第5、10、15…次的结果),预期输出如下:

[1] 83
[1] 132
[1] 156

我尝试利用模运算实现该需求,写出如下代码:

for (i in 1:100) 
{
num_i = as.integer(rnorm(1,100,100))
ifelse(i %% 5 == 0, print(num_i), "" )
}

请问我的写法是否正确?


你的写法可以实现需求,但不够规范:

  • ifelse是专为向量设计的向量化判断函数,在单个循环的单条件场景下,用普通的if语句可读性更好,代码也更简洁:
    for (i in 1:100) 
    {
      num_i = as.integer(rnorm(1,100,100))
      if (i %% 5 == 0) {
        print(num_i)
      }
    }
    
  • 原代码中ifelse的else分支返回""完全多余,因为你不需要这个分支产生任何输出,用if语句可以直接省略这部分。

额外优化思路:如果只需要每第5次的结果,直接调整循环的序列能减少不必要的计算,效率更高:

for (i in seq(5, 100, by = 5)) 
{
  num_i = as.integer(rnorm(1,100,100))
  print(num_i)
}

这样循环仅执行20次,直接生成并打印目标次数的结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 13:50:21