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
可以成为一个真正的功能宝石!(举个很酷的例子。)