r - 识别 R 向量中的特定元素顺序模式
问题描述
我有一个向量列表,每个向量看起来像这样
c(“日本”,“美国”,“国家”,“日本”,“来源”,“国家”,“英国”,“来源”,“国家”,“美国”)
我的任务是在第一个 c("source", "country") 之后提取国家名称,因此“UK”将是本示例中要提取的国家名称。在所有向量中,c("source", "country") 后面都会跟着一个国家名称,所以我只需要在第一个 c("source", "country") 之后提取元素。
解决方案
我们可以在这里尝试使用粘贴折叠正则表达式方法:
v <- c("Japan", "USA", "country", "Japan", "source", "country", "UK", "source", "country", "USA")
terms <- paste(v, collapse="|")
country <- sub("^.*?\\|source\\|country\\|(.*?)\\|.*$", "\\1", terms)
country
[1] "UK"
这里使用的方法是形成一个以竖线分隔的术语列表,如下所示:
Japan|USA|country|Japan|source|country|UK|source|country|USA
然后,我们搜索第一次|source|country|
出现并保留紧随其后的术语。
推荐阅读
- python - 合并或连接不均匀行的df - python
- java - 使用递归二分搜索找到未知数
- javascript - 我怎样才能有一个 url 超链接?
- python - 使用 ePuck [Webots] 进行线路跟踪和避障
- linux - 如何不使 sed 与被替换的第一个参数重叠?
- android - 无法在广播接收器类中注入视图模型
- python - 如何在没有特定元素的列表中使用 random.choice()?
- google-chrome - 如何在 Google Chrome 上使用受 SSL 保护的本地网站?
- typescript - 如何实现打字稿函数重载
- html - Angular 10 - 无法绑定到“ngModel”,因为它不是“select”的已知属性