19
我想这是一个重复的,但我不能找到所以这里去...获取另一个向量的值的索引?
我想回到第二的指数第一:
first = c("a" , "c" , "b")
second = c("c" , "b" , "a")
result = c(2 , 3 , 1)
我保证第一个和第二个具有唯一的值,并且两者之间的值相同。
我想这是一个重复的,但我不能找到所以这里去...获取另一个向量的值的索引?
我想回到第二的指数第一:
first = c("a" , "c" , "b")
second = c("c" , "b" , "a")
result = c(2 , 3 , 1)
我保证第一个和第二个具有唯一的值,并且两者之间的值相同。
获取值的索引是match()
的用途。
first = c("a" , "c" , "b")
second = c("c" , "b" , "a")
match(second, first)
[1] 2 3 1
我正在解决相关的问题,选择基于模式的矢量元素。假设我们有向量'a',并且我们希望找到向量'b'的出现。可用于通过多种搜索模式过滤数据表。
a=c(1, 1, 27, 9, 0, 9, 6, 5, 7)
b=c(1, 9)
match(a, b)
[1] 1 1 NA 2 NA 2 NA NA NA
所以match()在这里并不真正有用。在运用%二进制运算符%是更方便:
a %in% b
[1] TRUE TRUE FALSE TRUE FALSE TRUE FALSE FALSE FALSE
a[a %in% b]
[1] 1 1 9 9
其实从比赛()帮助%的%就位于匹配()函数包:
"%in%" <- function(x, table) match(x, table, nomatch = 0) > 0
mdsummer - 谢谢!第二部分不是一个问题,我只是指出了一些问题的界限(编辑以便更清楚)。你的解决方案效果很好 – SFun28
w00te:在R源文件中,[R] \ src \ library \ base \ R \ match.R和[R] \ src \ main \ match.c – mdsumner
清除问题,明确回答!这是非常好的,非常罕见的例子! :-) +1 +1 – TMS