假设我有三个矩阵:
Mat1 = matrix(0,4,4)
Mat2 = matrix(0,4,4)
Mat3 = matrix(0,4,4)
然后假设我需要创建数字矩阵很难手动完成。另外,我想使用low.tri(Mat1)
将这些函数作为低三角矩阵,所以有没有办法轻松地做到这一点。
我搜索lapply
个家庭但找不到我的问题的答案。
答案 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