R语言嵌套ifelse语句编写是否正确?分类结果异常问题求助
故障原因说明
- 核心问题是变量名大小写拼写错误。R语言严格区分大小写,你代码中赋值的目标是大写开头的
New数据框的var列,但嵌套ifelse的判断条件调用的是小写开头的new数据框的var1列。如果你的工作环境中不存在小写new对象、或new$var1的取值和你预期的New$var1完全不符,就会导致所有小于10的判断条件都不成立,最终全部落到兜底的"d"分类中。 - 边界值遗漏是潜在隐患:当前判断逻辑没有覆盖
var1等于10、等于20、等于30的情况,但你提到本该归为"a"的数值被错分,说明该问题不是本次故障的诱因。 - 搭配
which语句运行正常的原因:你在写which相关逻辑时,大概率写对了数据框名的大小写(比如调用的是New$var1而非new$var1),判断逻辑可以正常取到预期的数值,所以结果符合预期。
优化建议
可以改用dplyr::case_when简化多重条件判断的写法,避免嵌套ifelse的可读性问题,同时统一变量名拼写:
New$var <- dplyr::case_when( New$var1 < 10 ~ "a", New$var1 < 20 ~ "b", New$var1 < 30 ~ "c", TRUE ~ "d" )
内容的提问来源于stack exchange,提问作者stats_noob
相关产品推荐
相关产品推荐

