Hi,
I tried to compare two CFA models using the mxCompare function. Unfortunately, I received the message:
Error in refSummary$modelName : $ operator is invalid for atomic vectors
At first I thought I had some code error but I run an example located in the help for mxCompare function, that is:
data(demoOneFactor)
manifests <- names(demoOneFactor)
latents <- c("G1")
model1 <- mxModel(model="One Factor", type="RAM",
manifestVars = manifests,
latentVars = latents,
mxPath(from = latents, to=manifests),
mxPath(from = manifests, arrows = 2),
mxPath(from = latents, arrows = 2, free = FALSE, values = 1.0),
mxData(cov(demoOneFactor), type = "cov", numObs = 500)
)
fit1 <- mxRun(model1)
latents <- c("G1", "G2")
model2 <- mxModel(model="Two Factor", type="RAM",
manifestVars = manifests,
latentVars = latents,
mxPath(from = latents[1], to=manifests[1:3]),
mxPath(from = latents[2], to=manifests[4:5]),
mxPath(from = manifests, arrows = 2),
mxPath(from = latents, arrows = 2, free = FALSE, values = 1.0),
mxData(cov(demoOneFactor), type = "cov", numObs=500)
)
fit2 <- mxRun(model2)
mxCompare(fit1, fit2)
In this situation, I received the same error message.
Error in refSummary$modelName : $ operator is invalid for atomic vectors
What's wrong?
best regards,
Krzysztof
Which version of OpenMx are you using? What is the output of mxVersion() ? Here is what I get for your example,
The output of mxVersion() is
OpenMx version: 2.6.9 [GIT v2.6.9]
R version: R version 3.2.5 (2016-04-14)
Platform: x86_64-w64-mingw32
Default optimiser: SLSQP
Can you upgrade to 2.8.3 and try again?
Yes, I upgraded 2.8.3.
> mxVersion()
OpenMx version: 2.8.3 [GIT v2.8.3]
R version: R version 3.4.2 (2017-09-28)
Platform: x86_64-w64-mingw32
Default optimiser: CSOLNP
NPSOL-enabled?: No
OpenMP-enabled?: No
But it doesn't help.
Krzysztof
Can you post a script that demonstrates what doesn't work?
I'm also curious to see a complete script that demonstrates the issue. Are you loading a saved R workspace, or any .RData file, before you encounter this issue? Also, please make sure your script makes clear the exact order in which packages are loaded into R's workspace.
Yes, I was loading a saved R workspace and the trying to compare two models. When I created a completely new project and re-run my models, the previously reported problem disappeared. Thank you for your help!
Krzysztof
OK, good, I'm glad it's resolved and working for you.
IMO, we don't do a good enough job telling users that models will likely have to be re-run with a new version of OpenMx, i.e., mxModels in .Rdata files will likely not be compatible with a new version. It would be better if we could reliably tell users when that would be necessary - because we have changed the structure of mxModel objects to the point of incompatibility with prior versions. We might even consider using our upgrade numbering system to validate what would and what would not work from a prior version - version changes in the z of version x.y.z would not require re-running models, whereas changes of x or y would require it. That is not, I think, the way we use it now. This change would, of course, require a test...
See v2.8.3-7-ga05220da3 for some improvement in this direction.