Ifelse在函数内部不起作用

时间:2016-12-22 00:57:23

标签: r function if-statement

我偶然遇到过这个问题,将ifelse语句放在函数中总是会产生相同的结果。

Data$QuarterHour <- ifelse( Data$Minute < 15, return( 1 ),
                                  ifelse( Data$Minute < 30 , return( 2 ),
                                          ifelse( DataFrame$Minute < 45, return( 3 ), return( 4 ) ) ) )

这完全没问题。但是,当我把它放入一个函数。它没有。

calculateHourQuarter <- function( aMinute )
{
ifelse( aMinute < 15, return( 1 ),
        ifelse( aMinute < 30 , return( 2 ),
                ifelse( aMinute < 45, return( 3 ), return( 4 ) ) ) )
}

DataFrame$QuarterHour <- calculateHourQuarter( as.numeric( Data$Minute ) )

这导致列填充1。当我在控制台中以交互方式调用该函数时,当我从控制台传递整数时,它会产生正确的结果。

有什么想法吗?

谢谢!

1 个答案:

答案 0 :(得分:7)

从您的R子句中删除<?php $min = 1; $max = 3; $number = rand($min,$max); while($number !== 2) { echo ($number); } ?> 语句。 R函数在遇到return时终止。

此外,return不需要ifelse语句,只返回。再次阅读return; ?ifelse的第一个示例向您展示了正确的工作方式:

ifelse

没有x <- c(6:-4) sqrt(ifelse(x >= 0, x, NA)) ,对吧?

最后,return实际上并不是为嵌套而设计的(尽管你可以)。使用ifelsecut代替(后者更适合您的需要,因为您需要整数结果):

findInterval