我正在编写一个生成100个矩阵的函数。有了这个,我需要遍历每个矩阵上的第一个超对角线并提取值。这些值应该进入数据框 - 每个超对角线1列。让我来说明一下:
[,1] [,2] [,3] [,4]
[1,] 1 X .2 .1
[2,] .7 .8 X .5
[3,] .6 .9 .4 X
[4,] .5 .1 .1 .2
所以我需要遍历这些矩阵中的100个,将每个矩阵的所有位置标记为X(第一个超对角线),然后我需要将每个第一个超对角线放在这样的数据框中:
matrix1 matrix2 matrix3
[1,2] .5 .2 .1
[2,3] .5 .1 .2
[3,4] .3 .7 .8
鉴于这种情况,存储100个矩阵的最佳方法是什么,我稍后将访问以创建输出数据帧?对象?由矩阵组成的数据框?
此外 - 除了我发布的影响我选择的数据结构之外还有其他因素吗?
答案 0 :(得分:3)
从手机上写字,但你可以试试这个:
as.data.frame(lapply(matrixList, function(M) diag(M[, -1]) ))
或者,如果它们都是10x10
,则可以将其替换为“上面的函数(M)”
M[(1:9)*11]