R 在ifelse()语句内部和外部运行行时的不同输出

R 在ifelse()语句内部和外部运行行时的不同输出,r,if-statement,zoo,R,If Statement,Zoo,我试图运行一个简单的命令,但不知道为什么在ifelse()函数内部和外部运行时,输出会有所不同。函数条件的计算结果为FALSE,因此输出应完全相同 但是,单独运行时,输出为01 01 01 NA(根据需要),但通过ifelse()函数,输出为0(不需要) 库(dplyr) 图书馆(动物园) x代码应该使用if,而不是ifelse。在?ifelse中,它表示以下内容,test是ifelse的第一个参数 “ifelse”返回与“test”形状相同的值 在问题test中,del==1是一个逻辑标量,因

我试图运行一个简单的命令,但不知道为什么在
ifelse()
函数内部和外部运行时,输出会有所不同。函数条件的计算结果为
FALSE
,因此输出应完全相同

但是,单独运行时,输出为
01 01 01 NA
(根据需要),但通过
ifelse()
函数,输出为
0
(不需要)

库(dplyr)
图书馆(动物园)

x代码应该使用
if
,而不是
ifelse
。在
?ifelse
中,它表示以下内容,
test
ifelse
的第一个参数

“ifelse”返回与“test”形状相同的值

在问题
test
中,
del==1
是一个逻辑标量,因此结果也是一个

另外,
rollappy
可以使用
list(1:(del-1))
引用前面有正偏移的偏移量1、2、…、del-1。这看起来更干净,因为它直接实现了需要的东西,而不是以后再修复,而且使用的包也更少

library(zoo)

del <- 2
if (del == 1) -1 else rollapply(x == 0, list(1:(del-1)), all, fill = NA)
## [1] FALSE FALSE  TRUE  TRUE FALSE  TRUE FALSE  TRUE    NA
图书馆(动物园)
德尔
library(zoo)

del <- 2
if (del == 1) -1 else rollapply(x == 0, list(1:(del-1)), all, fill = NA)
## [1] FALSE FALSE  TRUE  TRUE FALSE  TRUE FALSE  TRUE    NA