如何在R中使用str_match以便我可以使用逻辑AND运算符。因此,它会在返回结果之前搜索冰箱和破碎的关键字。
我使用的代码
x<- which(!is.na(str_match(data1$TWEET_TEXT,"fridge & broken")))
data9<- data1[x,]
但它不起作用。 可以请你帮忙,因为我是R编码的新手。
答案 0 :(得分:2)
您可以创建需要检测的单词向量(&#34; v1&#34;),使用lapply
循环向量,检查单词是否出现在&#34; TWEET_TEXT&#中34;列(grepl(x,..)
),Reduce
与&
一起使用。如果列表中的相应元素都为TRUE,则&
将返回&#34; TRUE&#34;否则&#34; FALSE&#34;。使用它作为索引,&#34; data1&#34;可以是子集。
v1 <- c('broken', 'fridge')
x1 <- Reduce(`&`, lapply(c('broken', 'fridge'),
function(x) grepl(x, data1$TWEET_TEXT)))
data1[x1,, drop=FALSE]
# TWEET_TEXT
#1 The fridge is broken for a month.
#2 The fridge is broken in 3 parts
#3 A broken fridge is of no use
另一个选择是使用str_detect
中的stringr
或stri_detect
中的stringi
。如果只有两个单词,则下面的代码也应该起作用
library(stringr)
x2 <- with(data1, str_detect(TWEET_TEXT, 'broken') &
str_detect(TWEET_TEXT, 'fridge'))
data1[x2,, drop=FALSE]
data1 <- structure(list(TWEET_TEXT = c("The fridge is broken for a month.",
"The fridge is broken in 3 parts", "A broken fridge is of no use",
"No use of fridge")), .Names = "TWEET_TEXT", row.names = c(NA,
-4L), class = "data.frame")