如何在R语言循环中保存自定义函数输出的字符串至向量?
错误原因
salaryCategory函数未设置正确的返回值逻辑。你使用的print()仅会将内容输出到控制台,并不会将分类字符串作为函数返回值传递给赋值对象。同时函数内使用四个独立的if判断,最终默认返回的是最后一个if语句的执行结果,当最后一个if的判断条件不满足时会返回NULL,导致j无法存储到正确值。- 独立
if的判断逻辑存在冗余,也容易触发多条件匹配的问题。
修复方案
1. 重写salaryCategory函数,添加返回值
salaryCategory = function(s){ if(s >= 40000 && s < 70000) { return("Low") } else if(s >= 70000 && s < 100000) { return("Medium") } else if(s >= 100000 && s < 140000) { return("High") } else { return("Invalid") } }
2. 运行原有循环即可得到预期结果
k = c(500000,75000,100000,42000) j = c() for (i in 1:length(k)) { j[i] = salaryCategory(k[i]) }
运行后j的值就是你期望的c("Invalid","Medium","High","Low")。
内容的提问来源于stack exchange,提问作者Ace123
相关产品推荐
相关产品推荐

