Если вы хотите изменить с NA
этого должно быть достаточно:
set.seed(1)
ld1 <- matrix(sample(1:1000, 81, replace = T)/1000, 9, 9)
diag(ld1) <- 1
ld1[ld1 > .95 & ld1 < 1] <- NA
ld1
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9]
[1,] 1.000 0.062 0.381 0.383 0.795 0.790 0.071 0.333 0.347
[2,] 0.373 1.000 0.778 0.870 0.108 0.024 0.100 0.651 0.334
[3,] 0.573 0.177 1.000 0.341 0.724 0.478 0.317 0.259 0.477
[4,] 0.909 0.688 0.213 1.000 0.412 0.733 0.519 0.479 0.893
[5,] 0.202 0.385 0.652 0.600 1.000 0.693 0.663 0.767 0.865
[6,] 0.899 0.770 0.126 0.494 0.648 1.000 0.407 0.085 0.390
[7,] 0.945 0.498 0.268 0.187 0.783 0.862 1.000 0.876 0.778
[8,] 0.661 0.718 0.387 0.828 0.554 0.439 0.294 1.000 NA
[9,] 0.630 NA 0.014 0.669 0.530 0.245 0.460 0.840 1.000
Если вы хотите удалить столбцы и строк, которые содержат любое значение> .95, этого должно быть достаточно.Хотя это будет работать, если вы просто удалите столбцы или строки.Если это не то, что вы ищете, вы можете опубликовать ожидаемый результат:
remove_me <- which(ld1 > .95 & ld1 < 1, arr.ind = T)
ld1[-remove_me[,1], -remove_me[,2]]
[,1] [,2] [,3] [,4] [,5] [,6] [,7]
[1,] 1.000 0.381 0.383 0.795 0.790 0.071 0.333
[2,] 0.373 0.778 0.870 0.108 0.024 0.100 0.651
[3,] 0.573 1.000 0.341 0.724 0.478 0.317 0.259
[4,] 0.909 0.213 1.000 0.412 0.733 0.519 0.479
[5,] 0.202 0.652 0.600 1.000 0.693 0.663 0.767
[6,] 0.899 0.126 0.494 0.648 1.000 0.407 0.085
[7,] 0.945 0.268 0.187 0.783 0.862 1.000 0.876
РЕДАКТИРОВАТЬ: обновленный ответ и пример, предполагая, что это корреляционная матрица с 1.000 на главной диагонали.Я также предположил, что не было бы совершенных корреляций кроме главной диагонали.