匹配不同长度向量列表中的数字

时间:2014-04-24 09:42:54

标签: r list match

我想匹配包含不同长度的矢量的列表中的数字。仍然我的解决方案(下面)与每个向量的第一项之外的任何内容都不匹配。

seq_ <- seq(1:10)
list_ <- list(seq_[1:3], seq_[4:7], seq_[8:10])
list_ 
#  [[1]]
#  [1] 1 2 3
# 
#  [[2]]
#  [1] 4 5 6 7
# 
# [[3]]
#  [1]  8  9 10

但是

for (i in seq_) {
  print(match(i,list_))
}
# [1] 1
# [1] NA
# [1] NA
# [1] 3
# [1] NA
# [1] NA
# [1] NA
# [1] NA
# [1] NA
# [1] NA

1 个答案:

答案 0 :(得分:0)

在一般情况下,您可能会对which感到满意,就像在

中一样

编辑:重写以显示完整的循环值。

seq_ <- seq(1:10)
list_ <- list(seq_[1:3], seq_[4:7], seq_[8:10])
matchlist<-list(length=length(list_))
    for( j in 1:length(list_)) {
       matchlist[[j]] <-  unlist(sapply(seq_, function(k) which(list_[[j]]==k) ))
    }

这将返回所有比赛的位置。如果你创建像my.list <- list(sample(1:10,4,replace=TRUE), sample(1:10,7,replace=TRUE))

这样的输入,可能会更清楚发生了什么?