有没有办法只选择部分匹配而不是完全匹配

时间:2019-10-31 20:02:36

标签: r string

我有两个字符向量。第一个包含一些自然灾害的参考:“雪崩”,“山洪”,“雷暴风” ...等。 第二个具有相似数据但略有不同的数据:“雪崩”,“洪水”,“热”,“风”等。...我试图找到的不仅是精确的,而且还是第一个的部分匹配一个在第二个。所以我想我可以分开做。

第一个很直接:match(dt_event,ref_event)。现在,我还需要将“雷电大风”和“洪水泛滥”视为来自ref_event的“洪水”和“狂风”,从而也获得索引而不是NA。如果有一种方法可以在一个命令中同时进行完全匹配和部分匹配,那会更好。预先感谢。

dt_event <- c("avalanche","flash flood","thunderstorm winds")  
ref_event <- c("avalanche","flood","winds")  
match(dt_event,ref_event)

1 NA NA

1 个答案:

答案 0 :(得分:0)

假设两个向量是有序的,并且您想按元素进行比较:

dt_event[unlist(Map(grepl, ref_event, dt_event))]

或更一般的情况:

dt_event[sapply(ref_event, function(x) which(grepl(x, dt_event)))]