R 将()匹配到向量列表-长度可能不同
R 将()匹配到向量列表-长度可能不同,r,list,vector,match,R,List,Vector,Match,match(x,y)功能非常适合在向量y元素中搜索向量x元素。但是,当y是一个可能长度不同的向量列表时,做类似工作的有效且简单的方法是什么 我的意思是,结果应该是一个与x长度相同的向量,第I个元素应该是y中包含x的第I个元素的第一个成员,或者NA要找到x的每个元素(第一个)出现的y元素,请尝试以下操作: ## First, a reproducible example set.seed(44) x <- letters[1:25] y <- replicate(4, list(sam
match(x,y)
功能非常适合在向量y
元素中搜索向量x
元素。但是,当y
是一个可能长度不同的向量列表时,做类似工作的有效且简单的方法是什么
我的意思是,结果应该是一个与
x
长度相同的向量,第I个元素应该是y
中包含x
的第I个元素的第一个成员,或者NA
要找到x的每个元素(第一个)出现的y元素,请尝试以下操作:
## First, a reproducible example
set.seed(44)
x <- letters[1:25]
y <- replicate(4, list(sample(letters, 8)))
y
# [[1]]
# [1] "t" "h" "m" "n" "a" "d" "i" "b"
#
# [[2]]
# [1] "c" "l" "z" "a" "s" "d" "i" "u"
#
# [[3]]
# [1] "b" "k" "e" "g" "o" "i" "h" "j"
#
# [[4]]
# [1] "g" "i" "f" "r" "h" "w" "l" "o"
## Find the element of y first containing the letters a-j
breaks <- c(0, cumsum(sapply(y, length))) + 1
findInterval(match(x, unlist(y)), breaks)
# [1] 1 1 2 1 3 4 3 1 1 3 3 2 1 1 3 NA NA 4 2 1 2 NA 4 NA NA
##首先,一个可复制的示例
种子(44)
你的意思是像lappy(y,match,table=x)
?也许对Josh的答案投赞成票的犹豫是因为对你想要的结果感到困惑。是否希望在x
中的每个元素最先找到的位置找到y
的索引?或者你想要一个长度y
的列表,其中包含与x
元素相匹配的每个元素的索引?@BenBarnes我更新了这个问题的答案,非常有创意!Thanks@AliSharifi--谢谢。我自己也挺喜欢的!明亮的稍微重构一下中断:breaks@nachocab——是的,这样更好。谢谢你,谢谢你把我带回来findInterval
可以成为一个真正的功能宝石!(举个很酷的例子。)