问题描述
我有1000个名字的列表. (说A)我还有5个名字的清单. (例如B)我想找出这5个名字在1000号列表中出现在哪一行.
I have a list of 1000 names. (say A)I have another list of 5 names. (say B)I want to find out at which row number the 5 names occur in the 1000 number list.
例如艾米可以在A中发生25次B中有Amy.我想知道艾米出现在A的哪几行.
eg. Amy can occur 25 times in AAnd there is Amy in B.I want to know which rows Amy occurs in A.
我以前使用过match,但是这只给出了B中5个名字中每个名字的第一次出现,这与我的目的不符.
I have used match before, but that only gives the first occurrences of each of the 5 names in B which doesn't serve my purpose.
我需要在R中执行此操作.我对Regex一无所知.
I need to do it in R. I don't know anything about Regex.
谢谢!
推荐答案
A <- sample(1:10, 100, 100) ## generate sample data
B <- 1:5
A %in% B
[1] FALSE TRUE TRUE TRUE TRUE FALSE TRUE FALSE FALSE FALSE TRUE TRUE
[13] FALSE TRUE FALSE TRUE TRUE FALSE FALSE TRUE TRUE TRUE TRUE TRUE
[25] FALSE FALSE TRUE TRUE FALSE TRUE TRUE FALSE FALSE FALSE FALSE TRUE
[37] FALSE TRUE TRUE TRUE TRUE FALSE TRUE TRUE FALSE TRUE FALSE FALSE
[49] TRUE FALSE TRUE TRUE FALSE FALSE TRUE TRUE FALSE FALSE FALSE FALSE
[61] TRUE TRUE FALSE FALSE FALSE FALSE TRUE FALSE TRUE FALSE TRUE FALSE
[73] TRUE TRUE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE
[85] TRUE TRUE TRUE TRUE FALSE FALSE TRUE FALSE TRUE TRUE TRUE FALSE
[97] FALSE FALSE FALSE TRUE
which(A %in% B)
[1] 2 3 4 5 7 11 12 14 16 17 20 21 22 23 24 27 28 30 31
[20] 36 38 39 40 41 43 44 46 49 51 52 55 56 61 62 67 69 71 73
[39] 74 79 85 86 87 88 91 93 94 95 100
lapply(B, function(x) which(A %in% x))
[[1]]
[1] 5 22 23 36 40 49 69
[[2]]
[1] 21 30 39 44 46 56 61 85 93
[[3]]
[1] 2 7 14 28 38 51 62 73 87 91
[[4]]
[1] 3 4 11 12 20 24 27 41 43 52 55 71 74 79 88
[[5]]
[1] 16 17 31 67 86 94 95 100
没有幸免,您不知道B中的哪个元素在A中的位置上吗?
without lapply, you dont know which element of B is where in A from this do you?
这篇关于如何匹配R中的所有匹配项?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!