查找具有多重性的条目

时间:2014-04-07 09:15:59

标签: r

假设我有一个向量data <- c(1,2,2,1)和一个参考表,例如:ref <- cbind(c(1,1,2,2,2,2,4,4), c(1,2,3,4,5,6,7,8))

我希望我的代码返回以下向量:result <- c(1,2,3,4,5,6,3,4,5,6,1,2)。这就像使用R函数match()一样。但match()仅返回第一次出现的参考向量。类似于%in%

我尝试了merge()join()这样的功能,但我希望只使用rep()seq() R功能的组合。

2 个答案:

答案 0 :(得分:1)

你可以尝试

ref[ref[,1] %in% data,2]

每当第一列值在给定集合中时返回第二列值。你可以用lapply包装它:

unlist(lapply(data, function(x) ref[ref[,1] ==x, 2]))

答案 1 :(得分:0)

您可以像这样获得您正在寻找的指数:

indices <- sapply(data,function(xx)which(ref[,1]==xx))

当然,这是list,因为data的每个条目的点击次数会有所不同。所以你只需要unlist()

ref[unlist(indices),2]
[1] 1 2 3 4 5 6 3 4 5 6 1 2