假设我有以下列表
l1 = list()
for(i in 1:5){
l1[[i]] = matrix(rnorm(9),3)
}
现在,我想对l1
中的每个矩阵求出以下对角线矩阵
My_D = diag(c(1:3))
将My_D
加到l1
的有效方法是什么
我try 了以下几种方法,但没有奏效
l1 + My_D
lapply(l1, function(i) l1[[i]] + My_D)
假设我有以下列表
l1 = list()
for(i in 1:5){
l1[[i]] = matrix(rnorm(9),3)
}
现在,我想对l1
中的每个矩阵求出以下对角线矩阵
My_D = diag(c(1:3))
将My_D
加到l1
的有效方法是什么
我try 了以下几种方法,但没有奏效
l1 + My_D
lapply(l1, function(i) l1[[i]] + My_D)
我们可以这样用lapply
来做这件事:
有了lapply
,我们就可以迭代l1
中的每个矩阵.
function(x) x + My_D
会将My_D
加到列表中的每个矩阵垫上.
lapply(l1, function(x) x + My_D)
[[1]]
[,1] [,2] [,3]
[1,] 1.3232960 1.2963813 -0.8209761
[2,] -0.9243988 1.1403460 -0.1451593
[3,] -2.1092458 -0.1841043 4.1437289
[[2]]
[,1] [,2] [,3]
[1,] 0.5765338 0.8482495 0.558125
[2,] -0.1517627 3.5162358 -1.251998
[3,] -0.6023508 1.6212503 1.871297
[[3]]
[,1] [,2] [,3]
[1,] -0.2219524 -1.9098658 -0.7784212
[2,] -1.0356978 -0.0148585 1.1690386
[3,] 0.9394348 0.2223198 2.9638898
[[4]]
[,1] [,2] [,3]
[1,] 1.40803158 1.177378 0.2193847
[2,] -0.45375624 2.656497 -0.7228035
[3,] 0.08309659 -2.308122 2.5135570
[[5]]
[,1] [,2] [,3]
[1,] 0.3835801 -1.250286 -0.8052156
[2,] -1.3480947 2.109671 1.2550385
[3,] 0.9339825 1.188224 3.9017532