R语言if-else逻辑异常求助:数值处理不符合预期
问题解决:R中向量条件分支失效的修复
你的问题出在普通if/else不支持向量化判断——当x是向量时,它只会依据向量的第一个元素的判断结果,把同一种操作应用到整个向量。你的数据第一个元素是20(>1为TRUE),所以所有元素都执行了x/100,哪怕后面的0.002、0.3都小于1。
解决方法很简单,改用R内置的向量化条件函数ifelse(),它会对向量中的每个元素单独判断,分别执行对应分支:
# 模拟你的数据列 x <- c(20, NA, NA, 0.002, 0.3) data <- ifelse(x > 1, x/100, x)
运行后data的结果为:
[1] 0.200 NA NA 0.002 0.300
完全符合预期:大于1的数值被转为百分比形式,小于1的数值保持不变,NA也正常保留。
内容的提问来源于stack exchange,提问作者kfeye
相关产品推荐
相关产品推荐

