我正在尝试读取由 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(使用前将#替换为@)