请帮我查找列索引,其中两个不同的值同时出现。
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)的向量。
答案 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