繁体   English   中英

没有默认值的参数“no”丢失

[英]argument “no” is missing with no default

我正在尝试使用以下代码运行 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语句的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')))))))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM