R语言构建条件判断marks向量所有元素是否大于110的方法咨询
问题原因
你原来的代码存在两个核心问题:
marks > 110会返回和输入向量等长的布尔向量,每个元素仅对应单个数值是否满足大于110的条件,无法实现所有元素都满足条件的全局判断- 返回的字符串和需求要求的
"top"/"Down"不匹配
修正后代码
classmark<-function(marks){ # Enter your code here. Read input from STDIN. Print output to STDOUT V<- if (all(marks > 110)) "top" else "Down" return(V) } print(classmark(c(120,195,914,56))) print(classmark(c(130,295,294,196)))
逻辑说明
- 使用
all()函数对marks > 110返回的布尔向量做全局判断,只有所有元素都为TRUE时才会返回TRUE - 直接用基础if-else分支对全局判断结果赋值,符合需求要求的返回值规则
- 测试用例运行结果:第一个输入存在小于110的数值56,返回
Down;第二个输入所有数值都大于110,返回top,完全匹配需求。
内容的提问来源于stack exchange,提问作者Richard Belmont
相关产品推荐
相关产品推荐

