R 在列表中查找匹配的字符串并仅保留匹配的字符串

R 在列表中查找匹配的字符串并仅保留匹配的字符串,r,string,data-cleaning,R,String,Data Cleaning,我在R中有一个列表,其中有多个字符串,我需要与数据帧中的列匹配,并且只保留匹配的字符串 list <- c('Ford', 'Toyota', 'BMW') Col1 Col2 1 Ford A1 2 Toyota Prius 3 BMW B2 4 Ford A2 5 Tesla T1 您可以使用列表创建正则表达式字符串,然后可以在子调用中使用

我在R中有一个列表,其中有多个字符串,我需要与数据帧中的列匹配,并且只保留匹配的字符串

list <- c('Ford', 'Toyota', 'BMW')

Col1         Col2         
1            Ford A1
2            Toyota Prius
3            BMW B2
4            Ford A2
5            Tesla T1

您可以使用列表创建正则表达式字符串,然后可以在
子调用中使用该字符串:

regex.string <- paste0( ".*(", paste( list, collapse = "|" ), ").*" )
现在在子调用中使用它:

df$Col2 <- sub( regex.string, "\\1", df$Col2 )

注意:如下所述,对于包含特殊正则表达式字符的汽车品牌,这可能会中断。

这与rstudio有何关系?完成。现在。。。显示您的努力/代码?如果字符串包含特殊的正则表达式字符,这是否有效?可能没有,没有。您有一个示例吗?请注意,我想这也会破坏类似
grepl
调用的功能。
> regex.string
[1] ".*(Ford|Toyota|BMW).*"
df$Col2 <- sub( regex.string, "\\1", df$Col2 )
> df
  Col1     Col2
1    1     Ford
2    2   Toyota
3    3      BMW
4    4     Ford
5    5 Tesla T1