Мой код работает, но он очень медленный. То, что я хочу сделать, это взять два вектора одинаковой длины, исследовать значения строка за строкой и посчитать количество строк, которые равны 1. Я хочу подчеркнуть, что я не собираюсь суммировать количество раз, которое каждый вектор сам по себе имеет значение 1. Скорее, когда эти векторы располагаются рядом, сколько раз мы видим, что обе строки равны 1?
Я сделал это с помощью a для l oop и оператор if, где I l oop проходит через «пары строк» и увеличивает переменную на +1 каждый раз, когда совпадающая пара равна 1. Этот код находится ниже, но он слишком медленный. Я должен выполнить эту операцию с более чем 2000 векторами длиной не менее 4e6.
Относительно плохо знаком с R здесь, но если у кого-то есть какие-либо идеи относительно более быстрых способов, я благодарен за любые советы.
vec1 <- rep(c(0,0,1,1),times = 10)
vec2 <- rep(c(0,1,0,1),times = 10)
mat <- cbind(vec1,vec2)
matches <- 0
for(i in 1:length(mat[,1])){
if(mat[i,1] == 1 & mat[i,2] == 1){
matches <- matches + 1
}
}