首页 > 解决方案 > R:随机切换矩阵中非对角线的符号

问题描述

假设我生成以下矩阵

Sigma <- diag(x = 1, 100, 100)
Sigma[Sigma == 0] <- 0.25

所以对角线上有“1”,非对角线上有“0.25”。如何随机更改对角线上的一些符号以具有 -0.25 和 0.25 ?

当然,可以循环遍历元素,但我认为这不是一个优雅的解决方案

标签: rmatrixstatisticsdata-manipulation

解决方案


一种方法是为矩阵的长度随机生成 1 和 -1,将其乘以矩阵并将对角线变为 1。

Sigma <- Sigma * sample(c(1, -1), length(Sigma), replace = TRUE)
diag(Sigma) <- 1
Sigma

推荐阅读