R 查找至少一个关键字部分匹配的行

R 查找至少一个关键字部分匹配的行,r,dplyr,text-mining,tidyverse,R,Dplyr,Text Mining,Tidyverse,我有一个数据框df,其中列a带有文本。我还有一个单词表 keywords <- c("a", "b", "c") 将返回第一行 我更喜欢使用dplyr包的解决方案这里有两种方法。我在你的向量中添加了一个额外的条目,以检查所有关键字是否都会被检查,而不仅仅是第一个关键字 既然你说这是df$a,我就制作了一个tibledf,其中a是唯一的一列,只是为了更好地适应通常基于数据帧的dplyr操作 库(tidyverse) a%any()) #>来源:本地数据帧[2 x 1] #>小组: #>

我有一个数据框df,其中列
a
带有文本。我还有一个单词表

keywords <- c("a", "b", "c")
将返回第一行


我更喜欢使用dplyr包的解决方案这里有两种方法。我在你的向量中添加了一个额外的条目,以检查所有关键字是否都会被检查,而不仅仅是第一个关键字

既然你说这是
df$a
,我就制作了一个tible
df
,其中
a
是唯一的一列,只是为了更好地适应通常基于数据帧的
dplyr
操作

库(tidyverse)
a%any())
#>来源:本地数据帧[2 x 1]
#>小组:
#> 
#>#tible:2 x 1
#>a
#>       
#>1 hj**a**jk
#>2记录
第二种方式对我来说更直观,但不太适合
dplyr
方式。我映射了
a
——不是
df
中的列,而是独立的字符向量来检查是否匹配。然后我用它作为我的过滤标准。通常设置
dplyr
操作,以便您输入的值是函数的第一个参数,通常是数据帧。但是因为我实际上是在第二个参数中使用管道连接到
过滤器,而不是第一个参数,所以我为第一个参数指定了
df
,并为第二个参数使用了速记

a%>%
map\u lgl(~str\u detect(,关键字)%%>%any())%%>%
滤波器(df,)
#>#tible:2 x 1
#>a
#>       
#>1 hj**a**jk
#>2记录

由(v0.2.0)于2018年6月4日创建。

这里有两种
tidyverse
方法。我在你的向量中添加了一个额外的条目,以检查所有关键字是否都会被检查,而不仅仅是第一个关键字

既然你说这是
df$a
,我就制作了一个tible
df
,其中
a
是唯一的一列,只是为了更好地适应通常基于数据帧的
dplyr
操作

库(tidyverse)
a%any())
#>来源:本地数据帧[2 x 1]
#>小组:
#> 
#>#tible:2 x 1
#>a
#>       
#>1 hj**a**jk
#>2记录
第二种方式对我来说更直观,但不太适合
dplyr
方式。我映射了
a
——不是
df
中的列,而是独立的字符向量来检查是否匹配。然后我用它作为我的过滤标准。通常设置
dplyr
操作,以便您输入的值是函数的第一个参数,通常是数据帧。但是因为我实际上是在第二个参数中使用管道连接到
过滤器,而不是第一个参数,所以我为第一个参数指定了
df
,并为第二个参数使用了速记

a%>%
map\u lgl(~str\u detect(,关键字)%%>%any())%%>%
滤波器(df,)
#>#tible:2 x 1
#>a
#>       
#>1 hj**a**jk
#>2记录

由(v0.2.0)于2018-06-04创建。

尝试
df[sapply(df$a,函数(i)grepl(paste0(关键字,collapse='|'),i)),]
我得到的结果是:
a然后我建议您共享一部分数据。但是,您不应该使用
final_data[sappy(…)]
而不是
df[sappy(final_data$…)]
您是对的!对此很抱歉尝试
df[sapply(df$a,函数(i)grepl(paste0(关键字,collapse='|'),i)),]
这是我得到的:
a我建议您共享一部分数据。但是,您不应该使用
final_data[sappy(…)]
而不是
df[sappy(final_data$…)]
您是对的!很抱歉,谢谢你的解释!!谢谢你的解释!!
hj**a**jk
fgfg
re