在r?

时间:2017-07-02 18:04:17

标签: r

假设我有三个矩阵:

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

然后假设我需要创建数字矩阵很难手动完成。另外,我想使用low.tri(Mat1)将这些函数作为低三角矩阵,所以有没有办法轻松地做到这一点。

我搜索lapply个家庭但找不到我的问题的答案。

1 个答案:

答案 0 :(得分:2)

lapply用于列表。首先,在list中插入所有矩阵。 lower.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