r - 检测被 NaN/NA 模式包围的单个值
问题描述
我正在寻找一种模式来检测被 NA 或 NaN 包围的值。
我的数据如下所示:
c(1,2,3,NA,NaN,NA,6,9,10,NaN,NA,12,20,NA,NaN,12,NA,45,100,NA,200,NA,NaN,300)
我需要知道所有在 NA 或 NaN 之间的单个捕获值。
上述示例的结果将是:c(12, 200)
有什么优雅的想法吗?
解决方案
使用lag
和lead
功能从dplyr
你可以做 -
library(dplyr)
x[!is.na(x) & is.na(lag(x, default = 1)) & is.na(lead(x, default = 1))]
#[1] 12 200
这基本上返回了一个非 NA 值,它们被困在NA
值之间。
推荐阅读
- php - 用默认变量替换日期占位符
- csvhelper - 在 CSVHelper 中设置编码
- matlab - 使用 matlab fscanf() 或 fgetl() 读取串行端口会在实际值更改后数秒显示结果
- splash-js-render - 如何在 Scrapy-Splash 中使用 splash:mouse_press
- excel - 在vba中重复从2列排序范围
- javascript - 循环遍历 2 个数组并通过扭曲找到差异
- python - 如何在 Tensorflow 中为数组创建 np.subtract.outer
- r - 去掉向量字符串元素中空格后的部分
- microphone - 我可以通过 USB 接口访问多少个音频通道?全部 7 个?或混合到1?
- flutter - 在我的布局中显示分隔线时出现问题