这里我有两个字符串向量,它们的顺序很重要并且无法更改。
vec1 <- c("carrot","carrot","carrot","apple","apple","mango","mango","cherry","cherry")
vec2 <- c("cherry","apple")
我希望找出 vec2 中的元素是否出现在 vec1 中,如果出现,在哪里(索引/位置)以及以什么顺序出现。
I tried which(vec1 %in% vec2)
这使4 5 8 9
。这些是正确的索引,但顺序错误。我试过match(vec2,vec1)
这使8 4
。仅返回第一个匹配项。如果 vec1 是唯一的,这将起作用。
理想情况下,我正在寻找这样的结果:8 9 4 5
。
首先在位置 8 和 9 匹配樱桃,然后在位置 4 和 5 匹配苹果。
有没有一种聪明的方法可以做到这一点而不诉诸循环?
你可以试试这个
unlist(lapply(vec2, function(x) which(vec1 %in% x)))
[1] 8 9 4 5
它将依次返回 vec2 中存在的 vec1 中的元素。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)