2017-07-02 103 views
0

假設我有三個矩陣:通過r中的多個參數調用相同的函數?

Mat1 = matrix(0,4,4) 
Mat2 = matrix(0,4,4) 
Mat3 = matrix(0,4,4) 

然後假定我需要創建矩陣的數量是很難做手工。另外,我想用low.tri(Mat1)作爲一個低三角矩陣的函數,所以有什麼辦法可以做到這一點。

我搜索lapply家庭,但無法找到我的問題的答案。

+1

並創造了大量的這些矩陣,試試:'lapply(1:_number_of_matrixes_you_want_,函數(x)的矩陣(0,4,4))' – coffeinjunky

回答

2

lapply用於列表。首先,將所有矩陣插入listlower.tri是一個邏輯功能。如果你想得到一個更低的三角形,你應該創建一個類似於下面的f的函數。然後你可以使用lapply像這樣:

Mat1 = matrix(0,4,4) 
Mat2 = matrix(0,4,4) 
Mat3 = matrix(0,4,4) 
l <- list(Mat1,Mat2,Mat3) 

f <- function(m) { 
    m[lower.tri(m)] <- 1 
    m 
} 

lapply(l,f) 

[[1]] 
    [,1] [,2] [,3] [,4] 
[1,] 0 0 0 0 
[2,] 1 0 0 0 
[3,] 1 1 0 0 
[4,] 1 1 1 0 

[[2]] 
    [,1] [,2] [,3] [,4] 
[1,] 0 0 0 0 
[2,] 1 0 0 0 
[3,] 1 1 0 0 
[4,] 1 1 1 0 

[[3]] 
    [,1] [,2] [,3] [,4] 
[1,] 0 0 0 0 
[2,] 1 0 0 0 
[3,] 1 1 0 0 
[4,] 1 1 1 0 
相關問題