检查R中字符串和单词向量之间的一致性
我正在用字符串处理检查R中字符串和单词向量之间的一致性,r,R,我正在用字符串处理R。我的数据帧DF具有下一个结构: DF <- data.frame(v1=c(1,2,3),v2=c("Oranges are fruits","Hit music","Ferrari is red"),stringsAsFactors = F) v1 v2 1 1 Oranges are fruits 2 2 Hit music 3 3 Ferrari is red 我正在寻找一种方法来测试v2中
R
。我的数据帧DF
具有下一个结构:
DF <- data.frame(v1=c(1,2,3),v2=c("Oranges are fruits","Hit music","Ferrari is red"),stringsAsFactors = F)
v1 v2
1 1 Oranges are fruits
2 2 Hit music
3 3 Ferrari is red
我正在寻找一种方法来测试v2
中的所有字符串是否与d
一致。通过这种方式,我尝试了下一个代码:
DF$v3 <- grepl(d,DF$v2)
这是不正确的,因为v2
第三行中的字符串包含red
一词,该词包含在d
中。有没有办法获得这样的输出:
v1 v2 v3
1 1 Oranges are fruits TRUE
2 2 Hit music FALSE
3 3 Ferrari is red TRUE
我的原始数据集更大,
DF
就是其中的一个示例。非常感谢您的帮助。来自?grepl
,关于模式
参数:
如果提供长度为2或更多的字符向量,则使用第一个元素
因此,提供长度2d
将只搜索水果
要查看d
中的任何字符串是否匹配,您可以使用any
和迭代的方法,或者使用|
符号折叠d
作为模式,如下所示。请注意,在本例中,“He was barred”这样的句子将与“red”匹配
DF 2 2命中音乐错误
#>法拉利是红色的,真的
由(v0.3.0)于2019-07-12创建的一种方法是将
apply
与grepl一起使用两次。它基本上是做一个双for循环。对于v2中的每个元素,grepl应用于d的每个元素
DF$v3 <- sapply(DF$v2, FUN = function(s) any(sapply(d, FUN = grepl, s)))
DF
DF$v3
v1 v2 v3
1 1 Oranges are fruits TRUE
2 2 Hit music FALSE
3 3 Ferrari is red TRUE
DF$v3 <- sapply(DF$v2, FUN = function(s) any(sapply(d, FUN = grepl, s)))
DF