You are here

Revision of helper-functions from Sun, 01/02/2011 - 23:59

Revisions allow you to track differences between multiple versions of your content, and revert back to older versions.

Wiki home page

Ideas and example functions that extend OpenMx, encapsulate tedious work, and make scripts easier to write or more compact.

You will probably define helper functions, especially for summarising the output of model you use frequently.

If you have questions not answers, then add those here: That's how a wiki works. Please add material here as you learn...

Read a Lower triangle file


readLowerTriangle <- function(file, nrows, fill=TRUE) {
    xvector <- scan(file)
    X <- matrix(NA, nrows, nrows)
    i <- 1
    for(row in 1:nrows) {
        for(col in 1:nrows) {
            if(col>row) next
            X[row,col] <- xvector[i]
            i <- i + 1
            if (fill)
                X[col,row] <- X[row,col]

An alternative using matrix indexing would be:

read.lower.triangle <- function(file, nrows) {
  X <- matrix(NA, ncol=nrows, nrow=nrows)
  X[upper.tri(X, diag=TRUE)] <- scan(file)
  X[lower.tri(X, diag=FALSE)] <- t(X)[lower.tri(X, diag=FALSE)]

See also read.moments() in

require(sem) # install.packages("sem", dep=T)
read.moments(file = "", diag = TRUE,
names = as.character(paste("X", 1:n, sep = "")))

Converting a correlation matrix to a covariance matrix

If you are reanalysing published data, you may only have a correlation matrix and the SD for each variable. You can upconvert this to a covariance matrix with cor2cov(matrix, sd) from the MBESS package