如何验证数字列表是否在指定范围?R代码执行异常求助
问题分析与解决方案
嘿,我来帮你排查下代码里的问题,其实主要是两个小错误导致结果不符合预期:
1. 变量名冲突,覆盖了原数据
你一开始把目标向量赋值给了i,但紧接着的for循环又用i作为迭代变量——这会直接把原来的向量覆盖掉!循环里的i变成了从1到8的索引值,根本不是你要检查的那些数字,这自然会输出所有内容。
2. 条件判断逻辑错误
就算变量名没问题,你写的33 < i & i < 38是在判断索引值是否在这个区间,而不是原向量里的元素。索引1到8本来就都不在33-38之间,所以所有索引都会被打印出来,完全偏离了你的需求。
修正方案
方案1:修正for循环版本
先给原向量换个不冲突的名字,比如nums,然后循环遍历每个元素,判断是否在范围内:
# 重新命名向量,避免变量冲突 nums <- c(33,34,35,36,37,38,80,100) # 遍历每个元素 for (num in nums) { # 如果元素在33-38之间,跳过 if (num >= 33 && num <= 38) { next } # 否则打印该元素 print(num) }
方案2:更高效的R向量操作(推荐)
R是向量型语言,这种筛选任务完全不需要用for循环,直接用向量索引就能搞定,代码更简洁高效:
nums <- c(33,34,35,36,37,38,80,100) # 直接筛选出小于33或大于38的元素 out_of_range <- nums[nums < 33 | nums > 38] # 输出结果 print(out_of_range)
运行上面的代码,都会输出80和100,完全符合你的需求~
内容的提问来源于stack exchange,提问作者AAA
相关产品推荐
相关产品推荐

