树列表反向降低R中的三角矩阵

Ole*_*kov 5 tree r list matrix data-structures

我将如何进行转换

m = list(1,2:3,4:6,7:10)
Run Code Online (Sandbox Code Playgroud)

     [,1] [,2] [,3] [,4]
[1,]    0    0    0   10
[2,]    0    0    6    9
[3,]    0    3    5    8
[4,]    1    2    4    7
Run Code Online (Sandbox Code Playgroud)

一个想法或一些指导表示赞赏!感谢您的耐心等待,如果问题太幼稚或需要其他信息(我很乐意提供).

use*_*650 7

生病了一个基础R方法向前

# Create matrix with dimensions defined by the length of your list 
mat <- matrix(0, length(m), length(m)) 
# Fill in desired order
mat[upper.tri(mat, TRUE)] <- unlist(m)
# Order rows 
mat[length(m):1, ]
Run Code Online (Sandbox Code Playgroud)


G. *_*eck 4

1)下面将零lapply附加n到每个分量m,并取每个分量的sapply第一个元素,将结果重塑为矩阵。最后,我们反转结果矩阵的行顺序。即使没有定义三角矩阵,这也有效:nmm

n <- length(m)
sapply(lapply(m, c, numeric(n)), head, n)[n:1, ]
Run Code Online (Sandbox Code Playgroud)

给予:

     [,1] [,2] [,3] [,4]
[1,]    0    0    0   10
[2,]    0    0    6    9
[3,]    0    3    5    8
[4,]    1    2    4    7
Run Code Online (Sandbox Code Playgroud)

如果n可以为零,则使用rev(seq_len(n))代替n:1

2)直线前进sapply也可以。它在 的每个反转分量前面m加上适当数量的零,并重新整形为矩阵:

sapply(m, function(v) c(numeric(n - length(v)), rev(v)))
Run Code Online (Sandbox Code Playgroud)