R ifelse语句忽略输入问题:按Plot列奇偶性生成Transtyp列报错如何解决
问题原因
你编写的判断条件语法不符合R的运算规则:1 | 3 | 5 | 7中的|是逻辑或运算符,R中所有非0数值都会被识别为逻辑值TRUE,因此该表达式的运算结果为TRUE,转换为数值等价于1,最终你的判断条件实际等价于Plot == 1,所以只有Plot为1时才会返回"2"。
正确实现方案
方案1:手动匹配指定奇数
适合你当前明确指定奇数范围为1、3、5、7的场景:
library(dplyr) df %>% mutate( Plot = as.numeric(Plot), Transtyp = ifelse(Plot %in% c(1, 3, 5, 7), "2", "5") ) -> df_t
方案2:取模运算判断奇偶
更通用的奇数判断写法,无需手动枚举所有奇数:
library(dplyr) df %>% mutate( Plot = as.numeric(Plot), Transtyp = ifelse(Plot %% 2 == 1, "2", "5") ) -> df_t
内容的提问来源于stack exchange,提问作者Effigy
相关产品推荐
相关产品推荐

