Мне очень неясно, что вы пытаетесь сделать со своим кодом (см. Справку по форматированию кода), но если я правильно понимаю конец вашего вопроса, разве это не то, что вы хотите:
rbind(diag(cor(t[1:3,],y[1:3,])),diag(cor(t[4:6,],y[4:6,]))
EDIT
ОП, по-видимому, хочет, чтобы корреляции вычислялись в цикле и помещались по одному в результирующую матрицу. Для будущих читателей этого вопроса, имейте в виду, что этот стиль кода очень не похож на R, часто медленный и неэффективный, и редко рекомендуется.
Определить матрицы:
y <- cbind(6:11,(-5):(0),c(7,4,3,3,9,7))
x <- cbind(1:6,(-1):(-6),c(4,6,9,12,6,5))
Я использовал x
вместо t
, потому что t
- это имя очень часто используемой матричной функции (транспонирование), поэтому я предпочитаю избегать ее использования в качестве имени матрицы.
Инициализировать матрицу результатов и цикл:
result <- matrix(NA,2,3)
for (i in 1:2){
for (j in 1:3){
result[i,j] <- cor(x[(3*(i-1) + 1):(3*(i-1) + 3),j],y[(3*(i-1) + 1):(3*(i-1) + 3),j])
}
}