逐行填充下部矩阵,而不是列

mhe*_*ans 4 r matrix covariance

我试图读取由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
Run Code Online (Sandbox Code Playgroud)

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

 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
Run Code Online (Sandbox Code Playgroud)

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

但是,我无法将读入矢量正确存储在矩阵中.以下代码

S <- diag(6)
S[lower.tri(S,diag=T)] <- d
Run Code Online (Sandbox Code Playgroud)

按列填充下面的矩阵,而它应该按行填充.

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

有两种可能:只填充下面的矩阵(用对角线)并按行进行吗?

(我遇到的另一个问题是:LISREL使用'D + 01'而R只识别'E + 01'用于科学记数法.你可以在R中改变它以接受'D'吗?)

Hon*_*Ooi 9

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

S <- diag(6)
S[upper.tri(S, diag=TRUE)] <- d
t(S)
Run Code Online (Sandbox Code Playgroud)