2017-01-28 150 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