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