r - 嵌套 ifelse 语句中未使用的参数错误

标签 r if-statement

我正在制作一个输出星期几的函数,给定自 1970 年 1 月 1 日以来的天数。当它是一个 if then 链时,该函数工作正常语句,但我想在向量上使用该函数,所以我需要构建这个看起来很傻的 ifelse 链声明。

不幸的是,我不断收到此错误:

Error in ifelse(rem == 0, day = "Thursday", ifelse(rem == 1, day = "Friday",  : 
unused argument(s) (day = "Thursday")
Calls: dayFinder -> ifelse
Execution halted

我一直无法弄清楚如何绕过它 - 看起来它只是忽略了 then ifelse的一部分陈述。我试过向它提供各种样本数据集或数据点,但无法修复错误。

这是我的代码 - 提前致谢。
dayFinder <- function(x){
#Assuming that '0' refers to January 1 1970
#Store given number
start <- x
#Initialize variable
day="Halloween"
#Divide x by 7 and store remainder
rem <- x%%7
#Determine the day
ifelse(rem==0, day="Thursday", 
    ifelse (rem==1, day="Friday", 
        ifelse (rem==2, day="Saturday", 
            ifelse (rem==3, day="Sunday", 
                ifelse (rem==4, day="Monday", 
                    ifelse(rem==5, day="Tuesday", 
                        if (rem==6)
                            {
                                day="Wednesday"
                                }))))))
return(day)
}

q = seq(7,50,1)
z = dayFinder(q)
z

最佳答案

ifelse 有一些问题链,但我想首先提到一种以更具可读性的方式编写这种选择器的方法。

days.of.week <- c("Thursday", "Friday", "Saturday", "Sunday", "Monday", "Tuesday", "Wednesday")
x <- 21  # some value
day <- days.of.week[(x%%7) + 1]
day
[1] "Thursday"

现在...关于ifelse的使用和 unused argument error ...
首先,请记住 ifelse() 是一个函数 ,因此当你写出像 ... ifelse(rem == 0, day="Thursday, ... 这样的语句时, R 将解释 day="..."部分就像您正在通过 命名参数 day到函数。
此外,一般情况下,您应该避免使用 = [大部分时间],您可能想使用 <- .
无论如何,更正了 ifelse 链应该看起来像
rem <- 21%%7
day <- ifelse(rem==0, "Thursday", 
         ifelse (rem==1, "Friday", 
           ifelse (rem==2, "Saturday", 
             ifelse (rem==3, "Sunday", 
               ifelse (rem==4, "Monday", 
                 ifelse(rem==5, "Tuesday", "Wednesday")
               )
             )
           )
         )
       )

关于r - 嵌套 ifelse 语句中未使用的参数错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13303810/

相关文章:

r - 从n x m矩阵转换为R中的长矩阵

python - 将 django 中的价格字段转换为特定货币

c - C 中的 float 比较

javascript - 有没有比 "if-else"链更短的赋值方法?

r - ggplot2 和一组抖动/闪避点

r - 带过滤功能的日期条件非标准评估

r - 如何在 ggplot2 中包含小中断

r - 绘图的两个方面的两个单独的 y 轴标题,同时使用 ggplot2 保留方面顶部 strip 标签

C++ 字符串操作 - if 语句

mysql - 同时获取列的最大值和特定记录的同一列