gpt4 book ai didi

R - 具有超前和滞后的逻辑语句

转载 作者:行者123 更新时间:2023-12-04 15:03:58 24 4
gpt4 key购买 nike

我有一个数字向量,想检查是否有任何零被两个相同的数字包围,例如:

x <- c(3,0,3,4,5,2,0,1,3)

any(x == 0 & lag(x) == lead(x))
TRUE

但是问题是,如果向量以 0 开头或结尾,我将得到 NA,因为滞后或超前都将为 NA。

x <- c(0,3,4,5,2,0,1,3)

any(x == 0 & lag(x) == lead(x))
NA

在这种情况下,我仍然想返回一个 FALSE。有谁知道如何在不使用超前和滞后函数的情况下解决这个问题?

感谢您的帮助!

最佳答案

您需要检查 is.na 并且您可以利用 NA & FALSE 解析为 FALSE真 | NA 解析为 TRUE

试试这个:

any(!(is.na(lead(x)) | is.na(lag(x)) | lead(x) != lag(x) | x != 0))

这会检查您想要的所有错误情况是否都为真,然后否定整个表达式。

x <- c(3,0,3,4,5,2,0,1,3)
any(!(is.na(lead(x)) | is.na(lag(x)) | lead(x) != lag(x) | x != 0))
[1] TRUE

x <- c(0,3,4,5,2,0,1,3)
any(!(is.na(lead(x)) | is.na(lag(x)) | lead(x) != lag(x) | x != 0))
[1] FALSE

有时更容易检查假情况是否为真并取反。

关于R - 具有超前和滞后的逻辑语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66493318/

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