Estoy tratando de leer en una matriz de varianza-covarianza escrita por LISREL en el siguiente formato en un texto plano, espacio en blanco separado:Llenar la matriz inferior con el vector por fila, no la columna
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
Este es en realidad una matriz diagonal inferior (incluyendo diagonal):
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
puedo leer en los valores correctamente con scan()
o read.table(fill=T)
.
estoy sin embargo no es capaz de almacenar correctamente la lectura en el vector en una matriz. El siguiente código
S <- diag(6)
S[lower.tri(S,diag=T)] <- d
llena la matriz inferior por columna, mientras que debería llenarse por fila.
El uso de matrix()
permite la opción byrow=TRUE
, pero esto llenará toda la matriz, no solo la mitad inferior (con diagonal).
¿Es posible tener ambos: solo llene la matriz inferior (con diagonal) y hacerlo por fila?
(tema aparte que estoy teniendo:. LISREL 'D + 01' usos mientras que R sólo reconoce 'E + 01' para la notación científica ¿Se puede cambiar esto en R aceptar también 'D'?)