r - 缺少参数“no”,没有默认值
问题描述
我正在尝试使用以下代码运行 ifelse 语句。我将“No Lic”指定为 no 语句,但我仍然收到“没有默认值的参数“no”缺失”并且无法弄清楚原因。
数据:
ELED<-data.frame("ID"=1:6,"UG_Degree_Term"= c(201809,201901,201906,201909,202001,202006),"Test_Date"=c('2019-02-27','2018-10-23','2019-07-09','2019-01-18','2019-04-23','2018-7-12'))
ELED$Test_Date<-anytime(ELED$Test_Date)
代码:
ELED$UVM_Lic_Rec<-with(ELED,
ifelse(UG_Degree_Term==201809 & Test_Date<=as.POSIXct('2019-12-31'),"2019"),
ifelse(UG_Degree_Term==201901 & Test_Date<=as.POSIXct('2020-05-30'),"2019"),
ifelse(UG_Degree_Term==201906 & Test_Date<=as.POSIXct('2020-08-31'),"2019"),
ifelse(UG_Degree_Term==201909 & Test_Date<=as.POSIXct('2020-12-31'),"2020"),
ifelse(UG_Degree_Term==202001 & Test_Date<=as.POSIXct('2021-05-30'),"2020"),
ifelse(UG_Degree_Term==202006 & Test_Date<=as.POSIXct('2021-08-31'),"2020",'No Lic'))
解决方案
该ifelse
函数通常需要三个参数:
test
: 条件,yes
: 如果条件成立,返回什么,no
: 如果条件不成立,返回什么。
您缺少第三个(no
参数),并且 R 的错误消息是这样说的(诚然以一种不透明的方式)。
在这里,我用一个更简单的例子重现了这个错误:
> x <- 1
> ifelse(x == 1, "YES")
[1] "YES"
> ifelse(x == 0, "YES")
Error in ifelse(x == 0, "YES") :
argument "no" is missing, with no default
> ifelse(x == 0, "YES", "NO")
[1] "NO"
您的代码的问题是每个ifelse
语句的右括号直接出现在yes
参数之后。他们需要走到最后,像这样:
ELED$UVM_Lic_Rec<-with(ELED,
ifelse(UG_Degree_Term==201809 & Test_Date<=as.POSIXct('2019-12-31'),"2019",
ifelse(UG_Degree_Term==201901 & Test_Date<=as.POSIXct('2020-05-30'),"2019",
ifelse(UG_Degree_Term==201906 & Test_Date<=as.POSIXct('2020-08-31'),"2019",
ifelse(UG_Degree_Term==201909 & Test_Date<=as.POSIXct('2020-12-31'),"2020",
ifelse(UG_Degree_Term==202001 & Test_Date<=as.POSIXct('2021-05-30'),"2020",
ifelse(UG_Degree_Term==202006 & Test_Date<=as.POSIXct('2021-08-31'),"2020",'No Lic')))))))
推荐阅读
- flutter - 任何人都可以显示多个小部件的状态如何
- javascript - 对于无限滑块,转换在 react.js 中不起作用
- python - 从上一个目录导入文件?
- typescript - Next.js 首次加载 JS 时间减少
- android - 如何进行分页以使片段中的代码更少而无需分页 3
- amazon-web-services - 亚马逊是否会因使用 Lightsail 超出可持续区域而向我收取额外费用?
- java - Spring-Boot:创建自定义注释类的实例
- python-3.x - Pyspark:使用 google bigquery 连接器使用 aws 胶水作业将嵌套数据插入 bigquery 时出现问题
- node.js - 如何在 vs 代码中调试 selenium nodejs 黄瓜测试?
- redux - TypeError:您在预期流的位置提供了无效对象。您可以提供 Observable、Promise、Array 或 Iterable。在浏览器中抛出