r - R向量-向量与有序索引匹配

标签 r

在这里,我有两个字符串向量,它们的顺序很重要,无法更改。

vec1 <- c("carrot","carrot","carrot","apple","apple","mango","mango","cherry","cherry")
vec2 <- c("cherry","apple")

我希望找出vec2中的元素是否出现在vec1中,如果出现,则在哪里(索引/位置)以及以什么顺序出现。

我尝试了which(vec1 %in% vec2),它给出了4 5 8 9。这些是正确的索引,但是顺序错误。我尝试了match(vec2,vec1),它给出了8 4。仅返回第一个匹配项。如果vec1是唯一的,这将起作用。

理想情况下,我正在寻找以下结果:8 9 4 5
樱桃首先在pos 8和9匹配,然后苹果在4和5匹配。

有没有一种聪明的方法可以做到这一点而不求助于循环?

最佳答案

你可以试试这个

unlist(lapply(vec2, function(x) which(vec1 %in% x)))
[1] 8 9 4 5

这将依次返回vec2中存在的vec1中的元素。

关于r - R向量-向量与有序索引匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30101300/

相关文章:

r - 如何跨两个表求和?

r - 将条形面板放置在地 block 的相对两侧

r - 出现警告时如何停止功能?

r - 为什么 r/sqlite 需要主键?

r - 如何对 R 数据框中的多列进行计数和分组?

r - 如何使用ggplot2将光栅文件绘制为直方图?

r - 如何用函数包装公式的 RHS 项

r - 更改 R 的 kable 中的列宽不会更改标题的宽度

r - 循环内的哪个函数效率更高(ncol/nrow() 或 dim())

regex - 如何防止regmatchs丢弃非匹配项?