2017-07-02 101 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 
相关问题