Capability to offer a vector to value and free slots in MXMatrix objects

Posted on
Picture of user. tbates Joined: 07/31/2009
This works

Chol    = mxMatrix(type="Full", 2,2, free=c(TRUE,TRUE,FALSE,TRUE), values=c(1,.2,0,1))

But this fails

Chol@free=c(TRUE,FALSE,FALSE,TRUE)
Chol@values=c(1,0,0,1)

It would be nice, given that we can create the free and values slots with vectors, if we could also update them iwth vectors, using the pre-existing nrow and ncol of the MxMatrix to do this:

vec2MatFormxMatrix <- function(oldMat, newVec) {
 newMat = matrix(data=newVec, nrow=nrow(oldMat), ncol=ncol(oldMat) )
 return(newMat)
}

newVec =c(TRUE,FALSE,FALSE,TRUE)
if(is.vector(newVec)){
	newVec = vec2MatFormxMatrix(Chol, newVec)
}
Chol@free=newVec
Replied on Wed, 09/23/2009 - 11:09
Picture of user. mspiegel Joined: 07/31/2009

This is a not a bug. You can think of Chol@free and Chol@values as two variables. The only way to perform the kind of substitution you are suggesting is to overload the "<-" operator. And the "<-" operator can only be overloaded for S4 object types. Chol@free and Chol@values are not S4 objects, and we don't want to make them S4 object types because then they can't be used as argument to any function in R that expects plain matrices.