如何在R中获取矩阵内与向量取值匹配的元素对应索引
R语言匹配数据框指定行索引的实现方案
你当前的%in%写法是将数据框拉伸为一维向量后做逐元素匹配,返回的逻辑向量无法直接定位同时匹配两个目标值的行,可按以下两种方案实现需求:
方案1:固定列条件匹配(性能最优,适合两列场景)
直接指定对应列的匹配条件,用which提取行号:
# 匹配v1对应行索引:Var2为v1[1]、Var1为v1[2] res <- which(m$Var2 == v1[1] & m$Var1 == v1[2]) # 匹配v2对应行索引:Var2为v2[1]、Var1为v2[2] res1 <- which(m$Var2 == v2[1] & m$Var1 == v2[2])
运行后res输出为2,res1输出为8,完全符合预期。
方案2:通用按行全匹配(适配任意列数、任意长度匹配向量)
如果后续列数或匹配向量长度有变化,可以用apply按行做全值匹配:
# 因v1/v2的元素顺序和m的列顺序相反,匹配前先反转向量 res <- which(apply(m, 1, function(row) all(row == rev(v1)))) res1 <- which(apply(m, 1, function(row) all(row == rev(v2))))
运行结果和方案1完全一致。
内容的提问来源于stack exchange,提问作者helpmeplease
相关产品推荐
相关产品推荐

