首页 > 解决方案 > 错误:使用“ifelse”时出现意外的“=”

问题描述

我想根据 df 中两个不同列的条件创建一个新列。我正在使用嵌套的“ifelse”:

data_long$benchmark <- ifelse(data_long$axis1<=2 & data_long$axis2<=2, 1,
                          ifelse(data_long$axis1>=3 & data_long$axis2=2, 2,
                          ifelse(data_long$axis1=2 & data_long$axis2>=3, 2,
                          ifelse(data_long$axis1=3 & data_long$axis2=3, 3,
                          ifelse(data_long$axis1>=4 & data_long$axis2=3, 4,
                          ifelse(data_long$axis1=3 & data_long$axis2>=4, 4,
                          ifelse(data_long$axis1>=4 & data_long$axis2=4, 5,
                          ifelse(data_long$axis1=4 & data_long$axis2>=4, 5,
                          ifelse(data_long$axis1>=5 & data_long$axis2>=5, 6)))))))))

但我收到以下错误:

错误:意外 '=' in: "data_long$benchmark <- ifelse(data_long$axis1<=2 & data_long$axis2<=2, "1", ifelse(data_long$axis1>=3 & data_long$axis2="

标签: r

解决方案


R中相等的正确符号是==

如果没有一些示例数据,就不可能检查您的所有逻辑,但错误是指您=ifelse语句中使用的事实。

因此,例如,您使用过的地方

...
ifelse(data_long$axis1>=3 & data_long$axis2=2, 2,
...

你应该使用:

...
ifelse(data_long$axis1>=3 & data_long$axis2 == 2, 2,
...

此外,如果您要嵌套这么多ifelse语句,我建议您查看包中的case_when函数dplyr


推荐阅读