R语言编写含for循环的函数统计向量奇数个数问题咨询
问题根因
- 循环判断对象错误:代码中
if(i %% 2 !=0)判断的是循环下标i的奇偶性,不是MAJOR$Unemployed里存储的实际数值,相当于统计的是序列1到向量长度的奇数个数,和目标需求完全无关。 - 输出位置错误:
print(odd_count)写在if判断块内部,每匹配到一次符合条件的对象就输出一次当前计数值,自然会出现重复输出的问题。 - 缺失值兼容问题:原代码没考虑向量里可能存在的NA值,直接做求余运算会触发报错。
修正方案
for循环实现版本
和你初始的for循环编写思路对齐,修复逻辑问题:
# 初始化奇数计数器 odd_count <- 0 # 遍历Unemployed列的每一个值 for (current_val in MAJOR$Unemployed) { # 先排除缺失值,再判断当前值是否为奇数 if (!is.na(current_val) && current_val %% 2 != 0) { odd_count <- odd_count + 1 } } # 循环全部结束后,输出最终统计结果 print(odd_count)
R语言更推荐的向量化实现
不需要写显式for循环,运行效率更高,代码更简洁:
odd_count <- sum(!is.na(MAJOR$Unemployed) & MAJOR$Unemployed %% 2 != 0) print(odd_count)
内容的提问来源于stack exchange,提问作者Spencer
相关产品推荐
相关产品推荐

