У меня есть матрица R
, скажем 20x20
и матрица s_mat
, скажем 400x2
. Я хочу сравнить (хранится в h.help
) каждый под-вектор размером 2x1
матрицы R
каждой строке s_mat
. Использование для циклов, как и в приведенном ниже коде, занимает слишком много времени. Есть ли способ избежать этих циклов? Потому что для больших матриц это занимает слишком много времени. Большое спасибо!Как ускорить сравнение подмножеств двух матриц в R
library(gtools)
R=matrix(sample(1:20,400, replace=TRUE), ncol=20, nrow=20)
l=2
s_mat = permutations(nrow(R), l, repeats.allowed=TRUE)
F = numeric()
F_perm = data.frame(matrix(NA,ncol=nrow(R)^l,nrow=nrow(R)-l+1))
for (perm in 1:nrow(s_mat))
{
s = s_mat[perm,]
for (k in 0:(nrow(R)-l))
{
h = rep (TRUE, ncol(R))
for (j in 1:ncol(R))
{
h.help = R[(k+1):(k+l),j] <= s
if (sum(h.help)!=l) h[j]=FALSE
}
F[k+1] = sum(h)/ncol(R)
}
F_perm[perm] = F
}
Я обновил код. Я использую 'h' после самого внутреннего цикла. Мой требуемый вывод - data.frame 'F_perm' – svendula