假设我有一个向量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功能的组合。
答案 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