Square bracket substitution has been implemented in the subversion repository. This is a feature that allows you to construct MxMatrix objects, and within the labels of a matrix use a string of the form "foo[row,col]" where 'foo' refers to another MxMatrix or MxAlgebra and 'row','col' must be numeric literals. It is very important to keep in mind that this only applies to matrix labels. You cannot use this notation in mxAlgebra expressions. Here are some examples of this notation:
require(OpenMx) A <- mxMatrix('Full', 1, 1, values = 1, name = 'A') B <- mxMatrix('Full', 1, 1, values = 2, name = 'B') C <- mxMatrix('Full', 1, 1, values = 3, name = 'C') D <- mxMatrix('Full', 3, 1, labels = c('A[1,1]', 'B[1,1]', 'C[1,1]'), name = 'D') model <- mxModel('model', A, B, C, D) model <- mxRun(model) omxCheckEquals(mxEval(D, model), as.matrix(c(1,2,3))) A <- mxMatrix('Full', 2, 2, values = c(1,2,3,4), byrow = TRUE, name = 'A') B <- mxAlgebra(A + A, name = 'B') C <- mxMatrix('Full', 2, 2, labels = c('B[2,2]', 'B[2,1]', 'B[1,2]', 'B[1,1]'), byrow = TRUE, name = 'C') model <- mxModel('model', A, B, C) model <- mxRun(model) omxCheckEquals(mxEval(C, model), matrix(rev(c(1,2,3,4)) * 2, 2, 2, byrow = TRUE))