RStudio中的字符串匹配

RStudio中的字符串匹配,r,string,R,String,我遇到以下情况的问题。我有一个数据帧df,在var1中有多个单词字符串。我只想保留var1中的单词,如果该单词在chr中。例如,var1的第一行有汽车电视狗,我想删除单词dog,因为它不在chr中 我的数据帧: id <- c(1,2,3) var1 <- c("car tv dog","cat water mouse","pen wire fish") df <- data.frame(id,var1) 我想保留的话: chr<-"car aaa bbb ccc dd

我遇到以下情况的问题。我有一个数据帧df,在var1中有多个单词字符串。我只想保留var1中的单词,如果该单词在chr中。例如,var1的第一行有汽车电视狗,我想删除单词dog,因为它不在chr中

我的数据帧:

id <- c(1,2,3)
var1 <- c("car tv dog","cat water mouse","pen wire fish")
df <- data.frame(id,var1)
我想保留的话:

chr<-"car aaa bbb ccc ddd qqq www eee rrr pen cat ttt fish tv"
预期结果:

want <- c("car tv","cat","pen fish")
dfWant <- data.frame(id, var1, want) 
非常感谢您的帮助。

代码:

# example data
df <- data.frame(
    id = 1:3,
    var1 = c("car tv dog", "cat water mouse", "pen wire fish"),
    stringsAsFactors = FALSE
)

# strings to search for (save each word as an element of a vector)
chr <- "car aaa bbb ccc ddd qqq www eee rrr pen cat ttt fish tv"
chr_vec <- unique(unlist(strsplit(chr, " ")))

# split var1 into words, check if word is in chr_vec, 
# keep only if true, re-combine into multi-word string
df$result <- unlist(lapply(strsplit(df$var1, " "), function(x) paste(x[x %in% chr_vec], collapse = " ")))

欢迎来到StackOverflow!请阅读相关信息以及如何给出建议。这将使其他人更容易帮助您。我不明白您希望如何创建第二个数据帧。模式是什么?还有,chr在做什么?这很不清楚。记住,读到这个问题的人并不像你那样沉浸在问题中。解释一下,就好像我们还不知道你想做什么一样。对不起,我应该说得更具体一些。want列是字符串chr和Var1的交点。也就是说,对于第一排,car和tv在字符串chr中存在,而dog不存在。我通常和你@RichScriven在一起,但由于他开始评论而不是编辑,我认为编辑的缺乏开始让他赢得了反对票,所以我就这样做了。
> df
  id            var1   result
1  1      car tv dog   car tv
2  2 cat water mouse      cat
3  3   pen wire fish pen fish