r - 带位置的连续字符匹配和提取
问题描述
我正在尝试在 R 中编写一个通用代码,在其中我以特定顺序在向量中连续查找 2 个(或更多)显式字符。我尝试的每个命令都只会返回第一个字符的匹配项。
我有一个看起来类似于数据的字符串,我想提取只有“L”和“V”并按顺序相邻的位置。所以我唯一的匹配应该是位置 3 & 4 和 7 & 8; 但是,我将返回位置 1、3 和 7 作为 L 的匹配项。是否可以只返回“LV”匹配项?
可重复使用的数据:
data <- c("L", "D", "L", "V", "A", "V", "L", "V")
解决方案
以下是一些可能性:
which(ts(data) == "L" & stats::lag(ts(data)) == "V")
## [1] 3 7
which(head(data, -1) == "L" & tail(data, -1) == "V")
## [1] 3 7
which(apply(t(embed(data, 2)) == c("V", "L"), 2, all))
## [1] 3 7
which(data == "L" & dplyr::lead(data) == "V")
## [1] 3 7
推荐阅读
- python - UserAttributeSimilarityValidator 应该如何在 Django REST Auth 中使用?
- c# - 有没有办法让参数以相同的形式传递给 form() 到 buttonEvent
- python - Python3:参数的条件扩展
- ios - 将数据从 TableViewController 传递到控制器单元格中的视图
- python-3.x - 为什么 ES6 (7/8...) 能够与 ES5(3) 兼容,因为语法差异如此之大?
- node.js - 在 MongoDB 上每秒保存多个文档返回超时
- python - BeautifulSoup 在谷歌 colab 中不起作用
- bash - 如何使用gnuplot制作两个值比较图?
- ios - SwiftUI LazyVGrid 动态行高
- angular - Angular 服务数据未加载