按行而不是按列用向量填充下矩阵

2023-11-22

我正在尝试读取由 LISREL 以以下格式在纯文本、空格分隔的文件中写出的方差-协方差矩阵:

 0.23675E+01  0.86752E+00  0.28675E+01 -0.36190E+00 -0.36190E+00  0.25381E+01
-0.32571E+00 -0.32571E+00  0.84425E+00  0.25598E+01 -0.37680E+00 -0.37680E+00
 0.53136E+00  0.47822E+00  0.21120E+01 -0.37680E+00 -0.37680E+00  0.53136E+00
 0.47822E+00  0.91200E+00  0.21120E+01

这实际上是一个下对角矩阵(包括对角线):

 0.23675E+01  
 0.86752E+00  0.28675E+01 
-0.36190E+00 -0.36190E+00  0.25381E+01
-0.32571E+00 -0.32571E+00  0.84425E+00  0.25598E+01 
-0.37680E+00 -0.37680E+00  0.53136E+00  0.47822E+00  0.21120E+01 
-0.37680E+00 -0.37680E+00  0.53136E+00  0.47822E+00  0.91200E+00  0.21120E+01

我可以正确读取值scan() or read.table(fill=T).

然而,我无法将读入向量正确存储在矩阵中。下面的代码

S <- diag(6)
S[lower.tri(S,diag=T)] <- d

按列填充下部矩阵,而应按行填充。

Using matrix()确实允许该选项byrow=TRUE,但这将填充整个矩阵,而不仅仅是下半部分(带有对角线)。

是否可以两者兼得:只填充下面的矩阵(有对角线)and按行做吗?

(我遇到的另一个问题:LISREL 使用“D+01”,而 R 只识别“E+01”作为科学记数法。您可以在 R 中更改此设置以接受“D”吗?)


只需将其读入上三角部分,而不是下三角部分:

S <- diag(6)
S[upper.tri(S, diag=TRUE)] <- d
t(S)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

按行而不是按列用向量填充下矩阵 的相关文章

随机推荐