Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R匹配列表中的单词_R_List_String Matching - Fatal编程技术网

R匹配列表中的单词

R匹配列表中的单词,r,list,string-matching,R,List,String Matching,我有一个字符向量 var1 <- c("pine tree", "forest", "fruits", "water") 与var1有2个匹配项 [[1]] [1] "tree" "house" "star" [[3]] [1] "apple" "orange" "grapes" 1与var1匹配 [[1]] [1] "tree" "house" "star" [[3]] [1] "apple" "orange" "grapes" 0与var1匹配 [[1]]

我有一个字符向量

var1 <- c("pine tree", "forest", "fruits", "water")
与var1有2个匹配项

[[1]]
[1] "tree"  "house" "star"   
[[3]]
[1] "apple"  "orange" "grapes"
1与var1匹配

[[1]]
[1] "tree"  "house" "star"   
[[3]]
[1] "apple"  "orange" "grapes"
0与var1匹配

[[1]]
[1] "tree"  "house" "star"   
[[3]]
[1] "apple"  "orange" "grapes"
所需输出为以下等级:

[1] "house"  "tree"   "dense forest"
[2] "tree"  "house" "star"
[3] "apple"  "orange" "grapes"
我试过了

sapply(var1, grep,  var2, ignore.case=T, value=T)
没有得到想要的输出

如何解决?若能提供代码片段,将不胜感激。 谢谢

编辑:

该问题已按上述短语从一个单词匹配到另一个单词匹配进行了编辑。

您可以尝试

var2[[which.max(lapply(var2, function(x) sum(var1 %in% x)))]]
[1] "house"  "tree"   "forest"
根据OP和@franks评论的最后修改

var2[order(-sapply(var2, function(x) sum(var1 %in% x)))]
[[1]]
[1] "house"  "tree"   "forest"
[[2]]
[1] "tree"  "house" "star" 
[[3]]
[1] "apple"  "orange" "grapes"

OP更改了所需的输出,我建议
var2[顺序(-sappy(var2,函数(x)sum(var1%in%x))]
此外,在最新的R中,有一个
length
函数,因此您可以执行
length(sappy(var2,intersect,var1))
谢谢@Frank,我不知道我可以像在vectors中一样访问列表的元素。@Frank就是这样elegant@john在这个网站上,发布一个新的问题通常比改变一个已经有答案的问题(基本上是否定答案)要好。“我接受当x”也有点不好,我想;我们大多数人这样做是为了帮助和学习,而不是为了互联网积分。不管怎样,只要让你知道;没什么大不了的。