错误:R中ifelse中未使用的参数

时间:2016-06-23 07:19:19

标签: r if-statement arguments dplyr discretization

我尝试使用以下代码使用ifelse语句对dataframe df中的列进行离散化。列aar包含从0到12的十进制值和NA。我检查数字值是否如下所示并将其分配给类别。

> df= df%>% mutate(arr2= ifelse( grepl("NA", aar)==T, "NA",
> ifelse(as.numeric(aar)==0, "0-0.99", ifelse(as.numeric(aar))==1,
> "1-1.99", ifelse(as.numeric(aar)==2, "2-2.99",
> ifelse(as.numeric(aar)==3, "3-3.99", ifelse(as.numeric(aar)==4,
> "4-4.99", ifelse(as.numeric(aar)==5, "5-5.99",
> ifelse(as.numeric(aar)==6, "6-6.99", ifelse(as.numeric(aar)==7,
> "7-7.99", ifelse(as.numeric(aar)==8,
> "8-8.99",ifelse(as.numeric(aar)==9, "9-9.99",
> ifelse(as.numeric(aar)==10, "10-10.99",  ifelse(as.numeric(aar)==11,
> "11-11.99", "12" )))))))))))))

但是我收到以下错误,

Error: unused arguments ("1-1.99", ifelse(as.numeric(c("0", "NA", "0",...... 

我做错了什么?有人可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:4)

您在第二次调用ifelse时过早地关闭了一个括号:

> ifelse(as.numeric(aar)==0, "0-0.99", ifelse(as.numeric(aar))==1,

应该是:

> ifelse(as.numeric(aar)==0, "0-0.99", ifelse(as.numeric(aar)==1,

我不是像@akrun这样的R大师,但必须有更好的方法来实现你想要做的事情,而不是嵌套12 ifelse个电话。您当前的方法使代码难以阅读,并且更难调试(因此您的问题)。