R 在列表中查找匹配的字符串并仅保留匹配的字符串
我在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 您可以使用列表创建正则表达式字符串,然后可以在子调用中使用
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