gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 08:50:25 26 4
gpt4 key购买 nike

我正在尝试运行一个简单的命令,但不知道为什么在 ifelse() 内部和外部运行它时输出不同功能。函数条件的计算结果为 FALSE ,所以输出应该是完全一样的。
但是,单独运行时,输出为0 0 1 1 0 1 0 1 NA (根据需要)但来自 ifelse()函数,输出为 0 (不想要)。

library(dplyr)
library(zoo)

x <- c(0, 1, 1, 0, 0, 1, 0, 1, 0)
del <- 2

dplyr::lead(zoo::rollsum(x, del - 1, fill = NA, align = "left")) == 0
[1] FALSE FALSE TRUE TRUE FALSE TRUE FALSE TRUE NA

ifelse(del == 1, -1, dplyr::lead(zoo::rollsum(x, del - 1, fill = NA, align = "left")) == 0)
[1] FALSE
我将不胜感激有关为什么会发生这种情况的任何帮助!以前从未见过这样的事情。 ifelse()的结果根据条件被评估为真还是假而具有不同的长度,但我不明白为什么这会导致较长输出的截断。

最佳答案

代码应该使用 if ,不是 ifelse .来自 ?ifelse它说以下内容 testifelse 的第一个参数.

‘ifelse’ returns a value with the same shape as ‘test’



在问题 testdel == 1这是一个逻辑标量,所以结果也是一个。
还有 rollapply可以使用 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

关于r - 在 ifelse() 语句内部和外部运行一行时的不同输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64127706/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com