Давайте посмотрим на пример матрицы и вычислим соотношения:
some.data <- data.frame(
A1.1 = c(1,3,4,5,6),
A1.2 = c(4,5,6,2,3),
A1.3 = c(3,3,4,2,1),
A2.1 = c(3,4,5,2,4),
A2.2 = c(4,5,5,4,2),
A2.3 = c(1,1,2,2,3),
A3.1 = c(1,3,4,5,6),
A3.2 = c(1,4,3,3,4),
A3.3 = c(4,4,4,4,5)
)
cor.mat <- cor(some.data)
Что дает:
A1.1 A1.2 A1.3 A2.1 A2.2 A2.3 A3.1 A3.2 A3.3
A1.1 1.00000000 -0.4109975 -0.6155470 0.06839411 -0.5305954 0.9009862 1.00000000 0.7428336 0.6393620
A1.2 -0.41099747 1.0000000 0.8320503 0.83205029 0.6454972 -0.3779645 -0.41099747 0.0000000 -0.3535534
A1.3 -0.61554702 0.8320503 1.0000000 0.42307692 0.8951436 -0.6289709 -0.61554702 -0.3580574 -0.7844645
A2.1 0.06839411 0.8320503 0.4230769 1.00000000 0.1790287 0.1572427 0.06839411 0.3580574 0.1961161
A2.2 -0.53059545 0.6454972 0.8951436 0.17902872 1.0000000 -0.7319251 -0.53059545 -0.1666667 -0.9128709
A2.3 0.90098616 -0.3779645 -0.6289709 0.15724273 -0.7319251 1.0000000 0.90098616 0.4879500 0.8017837
A3.1 1.00000000 -0.4109975 -0.6155470 0.06839411 -0.5305954 0.9009862 1.00000000 0.7428336 0.6393620
A3.2 0.74283363 0.0000000 -0.3580574 0.35805744 -0.1666667 0.4879500 0.74283363 1.0000000 0.4564355
A3.3 0.63936201 -0.3535534 -0.7844645 0.19611614 -0.9128709 0.8017837 0.63936201 0.4564355 1.0000000
В моих исходных данных некоторые столбцы являются зависимыми, здесьобозначены префиксами (A1, A2, A3).Поскольку они не представляют интереса для меня, я хочу установить корреляции с тем же префиксом в ноль, например, так:
A1.1 A1.2 A1.3 A2.1 A2.2 A2.3 A3.1 A3.2 A3.3
A1.1 0 0 0 0.06839411 -0.5305954 0.9009862 1.00000000 0.7428336 0.6393620
A1.2 0 0 0 0.83205029 0.6454972 -0.3779645 -0.41099747 0.0000000 -0.3535534
A1.3 0 0 0 0.42307692 0.8951436 -0.6289709 -0.61554702 -0.3580574 -0.7844645
A2.1 0.06839411 0.8320503 0.4230769 0 0 0 0.06839411 0.3580574 0.1961161
A2.2 -0.53059545 0.6454972 0.8951436 0 0 0 -0.53059545 -0.1666667 -0.9128709
A2.3 0.90098616 -0.3779645 -0.6289709 0 0 0 0.90098616 0.4879500 0.8017837
A3.1 1.00000000 -0.4109975 -0.6155470 0.06839411 -0.5305954 0.9009862 0 0 0
A3.2 0.74283363 0.0000000 -0.3580574 0.35805744 -0.1666667 0.4879500 0 0 0
A3.3 0.63936201 -0.3535534 -0.7844645 0.19611614 -0.9128709 0.8017837 0 0 0
Я мог бы сделать это с помощью цикла for, но я полагаю, что это можно сделатьнамного проще, чем это?