r - R - 具有领先和滞后的逻辑陈述
问题描述
我有一个数字向量,想检查是否有任何被两个相同数字包围的零,例如:
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
和TRUE | 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
有时更容易检查假情况是否为真和否定。
推荐阅读
- c# - 为什么 System.Net.Mail.MailAddress 构造函数在域部分解析带有斜杠“/”的电子邮件?
- vue.js - 父组件在vue中没有收到子事件
- jquery - 带有 Iframe 表单的 HTML 文件,使用框架外的按钮通过 JQuery 提交表单按钮
- vb.net - 按名称循环文本框
- python - 在 Python 数据框中选择列时出错
- html - 创建一个没有固定布局的 HTML 表格,设置了最大宽度,并且行不换行但有溢出:隐藏
- java - 什么是“未解决的编译问题”?
- python - 使用 pika 为 RabbitMQ 确认消息
- shopify - Translation API 自动将文本内容翻译成不同的语言?
- python - 如何将文本边界框与 pyplot.Rectangle 对齐?