\m2v operator?

Posted on
No user picture. svrieze Joined: 01/03/2010
Hello,

What would be the R or OpenMx equivalent of the \m2v operator in Classic Mx?

Related question: if I define in R my own function that performs this operation, can I use that function within the mxAlgebra command?

-Scott

Replied on Fri, 06/18/2010 - 22:07
Picture of user. mspiegel Joined: 07/31/2009

In reply to by svrieze

If I remember correctly, as.vector is not supported by OpenMx. Use the functions cvectorize or rvectorize to perform either row or column vectorization. There is a wiki page with matrix operators and functions but it is missing these two (sorry!). To write your own matrix function, you need to provide an implementation in C for OpenMx. There is a HOWTO on the wiki. You can also define an arbitrary objective function in R. See the user guide for help on that.
Replied on Tue, 06/22/2010 - 16:51
No user picture. svrieze Joined: 01/03/2010

Hello again,

Related question: how can I use colMeans() in an mxAlgebra command?

In some releases it appears that colMeans was a legitimate function within mxAlgebra (http://openmx.psyc.virginia.edu/docs/OpenMx/0.2.1-922/_static/Rdoc/mxAlgebra.html).

In the latest manual it is not listed as a viable function under the mxAlgebra command (http://openmx.psyc.virginia.edu/docs/OpenMx/latest/_static/Rdoc/mxAlgebra.html).

Thanks for the quick and helpful replies,

-Scott

Replied on Tue, 06/22/2010 - 17:28
Picture of user. mspiegel Joined: 07/31/2009

In reply to by svrieze

Yes. colMeans used to be listed in the documentation, but that was an error as it wasn't implemented. We'll put it on the TODO list, it shouldn't be too hard to implement rowMeans() and colMeans(). At best, you can currently compute the column means explicitly, although it is a pain. For example, if A is a 3 x 3 MxMatrix or MxAlgebra, then the column mean is:


col1 <- mxAlgebra(sum(A[,1]) / 3, name = "col1")
col2 <- mxAlgebra(sum(A[,2]) / 3, name = "col2")
col3 <- mxAlgebra(sum(A[,3]) / 3, name = "col3")
colMean <- mxAlgebra(rbind(col1, col2, col3), name = "colMean")

Replied on Sun, 06/27/2010 - 22:17
Picture of user. neale Joined: 07/31/2009

In reply to by mspiegel

Agreed these functions (
ceiling, floor, trunk, round
dim
rowMeans, colMeans
cov2cor)
Would be useful. There are some gotchas with cov2cor - it fails when diagonal elements are non-positive. I guess it will end up with NaNs in the rows and cols of any non-pos elements. In classic Mx it would throw an error which was inconvenient. NaN is much better.