【发布时间】:2020-07-17 18:16:39
【问题描述】:
我有一个如下所示的矩阵:
diag <- rep("Free",5)
offdiag <- rep("0.0", 5*6/2 )
m <- matrix(NA, ncol = length(diag), nrow = length(diag))
m[lower.tri(m)] <- offdiag
m[upper.tri(m)] <- t(m)[upper.tri(t(m))]
diag(m) <- diag
m
[,1] [,2] [,3] [,4] [,5]
[1,] "Free" "0.0" "0.0" "0.0" "0.0"
[2,] "0.0" "Free" "0.0" "0.0" "0.0"
[3,] "0.0" "0.0" "Free" "0.0" "0.0"
[4,] "0.0" "0.0" "0.0" "Free" "0.0"
[5,] "0.0" "0.0" "0.0" "0.0" "Free"
我想保留下三角形加上对角线元素,如下所示,在每个值后添加逗号 (,),最后添加 ;。可以在下面制作吗?
Free,
0.0, Free,
0.0, 0.0, Free,
0.0, 0.0, 0.0, Free,
0.0, 0.0, 0.0, 0.0, Free,
0.0, 0.0, 0.0, 0.0, 0.0, Free;
谢谢!
【问题讨论】:
-
offdiag长度不同。您可以将上对角线设置为"",即m[upper.tri(m)] <- "" -
关于预期输出。是矩阵输出还是字符串
-
或许,你可能需要
apply(m, 1, function(x) toString(x[seq_len(match("Free", x))]))