Вы можете создать фрейм данных с индексами строк и столбцов для диагонали и использовать его для извлечения диагональных значений из матрицы.
mat <- matrix(rnorm(4), ncol = 2)
Способ сделать это diag()
-
diag(mat)
[1] -0.5004046 -0.8785558
Другой способ сделать это -
rows_cols <- data.frame(rows = c(1:ncol(mat)), cols = c(1:ncol(mat)))
mat2 <- mat[as.matrix(rows_cols)]
mat2
[1] -0.5004046 -0.8785558
Надеюсь, это поможет!