r - 错误:使用“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中相等的正确符号是==
如果没有一些示例数据,就不可能检查您的所有逻辑,但错误是指您=
在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
。
推荐阅读
- python - 从 dict 列表理解中返回 True 或 False
- android - Android输入框预填充输入框
- sql-server - 使用 Adventureworks2008R2 数据库更改输出格式
- node.js - 将http请求存储到变量,然后将单独的http请求传递给前端
- wordpress - 从 wordpress 中的列中删除填充
- java - java.lang.ArrayIndexOutOfBoundsException:-40
- javascript - JQuery:禁用多个
- javascript - 使用 VueJS 和 Bootstrap Tabs 的响应式砌体是否可能?
- javascript - 从 Google Chrome 开发者控制台调用 PrimeFaces
- python - python递归类型错误