首页 > 解决方案 > 识别 R 向量中的特定元素顺序模式

问题描述

我有一个向量列表,每个向量看起来像这样

c(“日本”,“美国”,“国家”,“日本”,“来源”,“国家”,“英国”,“来源”,“国家”,“美国”)

我的任务是在第一个 c("source", "country") 之后提取国家名称,因此“UK”将是本示例中要提取的国家名称。在所有向量中,c("source", "country") 后面都会跟着一个国家名称,所以我只需要在第一个 c("source", "country") 之后提取元素。

标签: rpattern-matching

解决方案


我们可以在这里尝试使用粘贴折叠正则表达式方法:

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|出现并保留紧随其后的术语。


推荐阅读