2017-01-28 145 views
2

我需要在R中为我正在处理的项目生成一个逻辑矩阵。它应该是对角线应该为TRUE休息是FALSE。对于2x2矩阵来说很简单。在R中生成逻辑矩阵

d_matrix=matrix(c(TRUE, FALSE, FALSE,TRUE),nrow=2,byrow=TRUE) 
d_matrix 
     [,1] [,2] 
[1,] TRUE FALSE 
[2,] FALSE TRUE 
    n=20 
    diag_mat=diag(TRUE,n) 

现在我遇到了一个问题,我需要任何n的逻辑矩阵。说n = 20。我尝试如上所示,但它给了我对角线0和1的矩阵。但我需要TRUE和FALSE。有没有办法做到这一点,以便我为任何给定的n获得像d_matrix这样的矩阵。

回答

3

我们可以做一个diag并将其转换为logical矩阵

fmat <- function(n) { 
      diag(n)==1 
    } 
fmat(2) 
#  [,1] [,2] 
#[1,] TRUE FALSE 
#[2,] FALSE TRUE 
+1

那真棒。谢谢 ! – user24318