在Matrix列中同时匹配两个不同的值

时间:2014-06-07 08:27:48

标签: r

请帮我查找列索引,其中两个不同的值同时出现。

  library(combinat)
  y = c(4.7378092,0.8278563,2.7577482,0.7261934,3.0687797)
  m=combn(y,3)
       [,1]      [,2]      [,3]      [,4]     [,5]      [,6]      [,7]      [,8]      [,9]     [,10]
[1,] 4.7378092 4.7378092 4.7378092 4.7378092 4.737809 4.7378092 0.8278563 0.8278563 0.8278563 2.7577482
[2,] 0.8278563 0.8278563 0.8278563 2.7577482 2.757748 0.7261934 2.7577482 2.7577482 0.7261934 0.7261934
[3,] 2.7577482 0.7261934 3.0687797 0.7261934 3.068780 3.0687797 0.7261934 3.0687797 3.0687797 3.0687797

我正在使用which(m==y[1&2],arr.ind=TRUE)仅返回y变量的上述值的索引,但我想要给定矩阵的列索引,其中两个值都存在向量y,即列#1 ,2和3.作为回报,应该有一个包含值(1,2,3)的向量。

1 个答案:

答案 0 :(得分:1)

也许这个:

which(apply(m,2, function(x) all(y[1:2] %in% x)))

# [1] 1 2 3

m[,apply(m,2, function(x) all(y[1:2] %in% x))]

#           [,1]      [,2]      [,3]
# [1,] 4.7378092 4.7378092 4.7378092
# [2,] 0.8278563 0.8278563 0.8278563
# [3,] 2.7577482 0.7261934 3.0687797