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