R语言:如何找出两向量中值>600且索引相同的匹配位置?
解决两向量同索引位置均大于600的索引提取问题
原代码的问题在于:which(Vec2>600)和which(Vec1>600)返回的是各自向量中满足条件的索引集合,这两个集合的长度大概率不同,直接用==比较会触发R的循环补齐机制,得到的结果完全不是我们需要的“同一索引位置同时满足两个条件”的判断。
正确的思路是先对每个索引位置做逐元素的逻辑判断,再提取符合条件的索引:
set.seed(75) Vec1 <- sample(0:999, size = 100) Vec2 <- sample(0:999, size = 100) # 生成逐元素的逻辑向量:判断每个位置是否同时满足Vec1>600和Vec2>600 both_gt600 <- Vec1 > 600 & Vec2 > 600 # 提取满足条件的索引 matching_indices <- which(both_gt600) print(matching_indices)
也可以把两步合并成一行简化代码:
matching_indices <- which(Vec1 > 600 & Vec2 > 600)
这样就能准确得到所有“两个向量同位置值均大于600”的索引了。
内容的提问来源于stack exchange,提问作者Obida
相关产品推荐
相关产品推荐

