2016-12-10 7 views
-1

I a имеет симметричную матрицу (например, M <- matrix(1:4, ncol = 2)), и я хочу установить диагональные элементы на 0. Есть ли более умный способ, чем diag(diag(M), ncol = ncol(M))?Сделать симметричную матрицу диагональной матрицей в R

Примечание: diag не поддерживает usssage из diag(M, ncol = ncol(M)) и не имеет опции, как diag(M, as.matrix = TRUE) и т.д.

+0

'upper.tri (M) <- 0; lower.tri (M) <- 0' Первое, что я мог придумать. –

+0

Ваше название немного вводит в заблуждение. Я бы предложил положить нули с диагонали матрицы. – DJJ

+1

Я не думаю, что это вводит в заблуждение. Диагональная матрица - это матрица, где недиагональные элементы равны нулю. – norbertk

ответ

0

Не уверен, если это лучше или хуже, но вы могли бы вычислить поэлементное произведение матрицы с соответствующая единичная матрица.