R中随机二元非对称方阵的生成

R中随机二元非对称方阵的生成,r,random,matrix,binary,asymmetric,R,Random,Matrix,Binary,Asymmetric,我正在尝试创建随机二元平方矩阵。然而,也有一些限制。我希望对角线等于0。此外,上下三角形需要彼此反向换位 为了清楚起见,我要查找的是下面的一个随机示例5 x 5矩阵。如果查看任何行/列对,例如3和5、1和4,这些对的上三角形和下三角形的结果相反 [,1] [,2] [,3] [,4] [,5] [1,] 0 0 0 1 0 [2,] 1 0 0 0 0 [3,] 1 1 0 1 0 [4,]

我正在尝试创建随机二元平方矩阵。然而,也有一些限制。我希望对角线等于0。此外,上下三角形需要彼此反向换位

为了清楚起见,我要查找的是下面的一个随机示例5 x 5矩阵。如果查看任何行/列对,例如3和5、1和4,这些对的上三角形和下三角形的结果相反

      [,1] [,2] [,3] [,4] [,5]
[1,]    0    0    0    1    0
[2,]    1    0    0    0    0
[3,]    1    1    0    1    0
[4,]    0    1    0    0    1
[5,]    1    1    1    0    0
我在使我的随机矩阵不对称时遇到了一些问题

以下是我迄今为止创建随机二进制12x12矩阵的经验:

function1 <- function(m, n) {
matrix(sample(0:1, m * n, replace = TRUE), m, n)
}
A<-function1(12,12)
A #check the matrix
diag(A)<-0
function 1
fun
A[lower.tri(A)] <- t(A[upper.tri(A)])
A #rechecking the matrix - doesn't seem to do it.
fun <- function(n){
  vals <- sample(0:1, n*(n-1)/2, rep = T)
  mat <- matrix(0, n, n)
  mat[upper.tri(mat)] <- vals
  mat[lower.tri(mat)] <- 1 - t(mat)[lower.tri(mat)]
  mat
}
> fun(5)
     [,1] [,2] [,3] [,4] [,5]
[1,]    0    0    1    0    1
[2,]    1    0    1    0    1
[3,]    0    0    0    0    0
[4,]    1    1    1    0    1
[5,]    0    0    1    0    0
> out <- fun(5)
> out + t(out)
     [,1] [,2] [,3] [,4] [,5]
[1,]    0    1    1    1    1
[2,]    1    0    1    1    1
[3,]    1    1    0    1    1
[4,]    1    1    1    0    1
[5,]    1    1    1    1    0