【发布时间】:2011-03-15 23:48:38
【问题描述】:
我正在尝试读取由 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() 或read.table(fill=T) 正确读取值。
但是,我无法将读入的向量正确存储在矩阵中。以下代码
S <- diag(6)
S[lower.tri(S,diag=T)] <- d
按列填充下部矩阵,而应按行填充。
使用matrix() 确实允许选项byrow=TRUE,但这将填充整个矩阵,而不仅仅是下半部分(对角线)。
是否可以两者兼得:只填充下部矩阵(对角线)和逐行填充?
(我遇到的另一个问题:LISREL 使用 'D+01' 而 R 只识别 'E+01' 作为科学记数法。你可以在 R 中更改它以接受 'D' 吗?)
【问题讨论】:
标签: r matrix covariance