我有一个包含40个1x2矩阵的列表列表。我想用矩阵替换每个矩阵2x2矩阵
其中两个是原始值,另外两个是30原始
例如,如果我有以下矩阵:
[,1] [,2]
[1,] 2 12
[2,] 28 18
我想要一个新的矩阵,如下所示:
list1<-list()
for (i in 1:10){
list1[[i]]<-lapply(1:10, matrix, data= runif(2, 12, 30), nrow=1, ncol=2)
}
虽然我可以很容易地做到这一点,甚至只是在列表中,但我无法在列表列表中做到这一点。以下是一些示例代码:
{{1}}
答案 0 :(得分:2)
您可以通过两次拨打lapply()
来执行此操作:
l <- list(l1 = matrix(1:2, nrow=1), l2 = matrix(3:4, nrow=1))
l
#> $l1
#> [,1] [,2]
#> [1,] 1 2
#>
#> $l2
#> [,1] [,2]
#> [1,] 3 4
l2 <- list(l, l)
lapply(l2, function(l){lapply(l, function(mat){do.call(rbind, list(mat, 30-mat))})})
#> [[1]]
#> [[1]]$l1
#> [,1] [,2]
#> [1,] 1 2
#> [2,] 29 28
#>
#> [[1]]$l2
#> [,1] [,2]
#> [1,] 3 4
#> [2,] 27 26
#>
#>
#> [[2]]
#> [[2]]$l1
#> [,1] [,2]
#> [1,] 1 2
#> [2,] 29 28
#>
#> [[2]]$l2
#> [,1] [,2]
#> [1,] 3 4
#> [2,] 27 26
由reprex package(v0.2.0)创建于2018-03-22。