I try to estimate parameters in a meta-analytical path model, where A -> B -> C (full mediation) based on a list of correlation matrices in metaSem.

My A1 matrix is as follows:

A1 <- create.mxMatrix(c(0, 0, 0,

indep2med, 0, 0,

0, med2dep, 0),

type="Full", byrow=TRUE, ncol=3, nrow=3,

as.mxMatrix=TRUE)

dimnames(A1)[[1]] <- dimnames(A1)[[2]] <- variable.labels

My S1 matrix is as follows:

S1 <- create.mxMatrix(c("1", 0, 0,

0, ".1*e2", 0,

0, 0, ".1*e3"),

type="Full", byrow=TRUE, ncol=3, nrow=3,

as.mxMatrix=TRUE)

dimnames(S1)[[1]] <- dimnames(S1)[[2]] <- variable.labels

All is fine when I use the standard settings in estimating the pooled correlation matrix and estimating the model parameters using:

fit1 <- tssem1(data.list$data,data.list$n,method = "REM", RE.type = "Diag")

fit2 <- tssem2(fit1,Amatrix=A1,Smatrix=S1)

However, if I set diag.constraints="TRUE" in tssem2, that is

fit2 <- tssem2(fit1,Amatrix=A1,Smatrix=S1,diag.constraints="TRUE") as is recommended for mediation models, I get an error:

Error in diag.constraints & (sum(Constraints) > 0) : operations are possible only for numeric, logical or complex types

What do I do wrong? Moreover, why do I need to set diag.constraints="TRUE"?

Any help is appreciated.

PS. I firstly/also posted this question on stackoverflow: https://stackoverflow.com/questions/49387102/error-in-metasem-tssem2-ope...

A1 should generate an error. The correct syntax for A1 is:

A1 <- create.mxMatrix(c(0, 0, 0,

"0

indep2med", 0, 0,med2dep", 0),0, "0

type="Full", byrow=TRUE, ncol=3, nrow=3,

as.mxMatrix=TRUE)

The other syntax seems correct to me. By the way, diag.constraints="TRUE" is not required in tssem2() any more.

P.S. Please do not post it twice.