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
相关产品推荐
相关产品推荐

