首页 > 解决方案 > 如何根据名称列表搜索字符串列表并删除所有额外字符?

问题描述

我有一个包含标题和其他信息列表的数据框,以及相应的名称列表。我想做的是从标题中提取名称并将它们添加到最后的新列(“玩家”)中。我已经用尽了我公认的小 R 知识,并且找不到一种方法来使用它相应的名称列表。

names <- c("Mookie Betts", "Cody Bellinger", "Mike Trout", "Ronald Acuna")

titles <- c("asdfasdf Mike Trout asdfasd", "jashfjasf Mookie Betts hasjdfhasj", "asdfuiojhuo Ronald Acuna ashdfj", "uiwqtruhjhb Cody Bellinger asdfasdf", "asdhfjaf Ronald Acuna ahsdfj", "hajsdf Mookie Betts ahsdfj")

我不知道如何只提取名称。每当我认为我已经解决了它时,它就会返回整个标题字符串。

标签: rregex

解决方案


您可以names像这样创建一个正则表达式:

patterns <- paste0(names, collapse = "|")

并使用stringr包从中提取这些名称titles(忽略评论中要求的大小写):

library(stringr)

str_match(titles, regex(patterns, ignore_case = TRUE))
#      [,1]            
# [1,] "Mike Trout"    
# [2,] "Mookie Betts"  
# [3,] "Ronald Acuna"  
# [4,] "Cody Bellinger"
# [5,] "Ronald Acuna"  
# [6,] "Mookie Betts" 

推荐阅读