Давайте проясним, что происходит, когда вы передаете матрицы в cor
.Это правда, что cor
симметричен при передаче в простых векторах.
cor(mat1[,1], mat2[,1])
# [1] 0.2683129
cor(mat2[,1], mat1[,1])
# [1] 0.2683129
Но когда вы передаете в матрицах, Для каждой позиции i
, j
в полученной матрице вы получаете
cor(mat1, mat2)
-> result[i, j] = cor(mat1[,i], mat2[,j])
cor(mat2, mat1)
-> result[i, j] = cor(mat2[,i], mat1[,j])
Обратите внимание, что значения в матрице различны, поскольку столбцы сравниваются в другом порядке.Обратите внимание, что если вы просто транспонируете одну из матриц, они будут соответствовать
all(cor(mat1, mat2) == t(cor(mat2, mat1)))
# [1] TRUE
Поэтому не следует ожидать, что результаты будут идентичными при переключении порядка параметров с матрицами, поскольку результаты определяются порядком столбцов.