In the 'doBy' package there is an esticon() function for calculating linear contrasts for various model types. I have defined an S3-method 'esticon.mer()' for 'mer' objects from the lme4 package. Building the package and invoking the method gives:

> esticon(fm1, c(1,1))
Confidence interval ( WALD ) level = 0.95
Error in as.integer(x) :
  cannot coerce type 'S4' to vector of type 'integer'
However, if is source the source code into R then I get what I expected:
> esticon(fm1, c(1,1))
Confidence interval ( WALD ) level = 0.95
  beta0 Estimate Std.Error X2.value DF Pr(>|X^2|) Lower.CI Upper.CI
1     0 261.8724  6.786701 1488.888  1          0 248.5707 275.1741
The problem above arises because esticon.mer() uses the variance-covariance matrix of the fixed effects (vcv below) in a calculation (cm is a matrix):
  cm %*% vcv %*% t(cm). The result is:

1 x 1 Matrix of class "dgeMatrix"
         [,1]
[1,] 46.05931
- and taking diag() of that matrix causes the error above... However, things work fine if I use as.matrix() as is:  diag(as.matrix(cm %*% vcv %*% t(cm))).

- This tentatively suggests that there is no diag() method for 'dgeMatrix' objects (can hardly be the case!), but why then does my code work when it is sourced into R???

- Does anyone have an idea about what goes wrong? )

- Is there anything 'special' that one must do in connection with defining S3-methods for S4 objects (e.g. in connection with package building)??

I use R 2.9.2 on windows XP. I am sure that such issues must have come up for others in the past but I've been unable to find questions/answers in the archives. Sorry if the topic has already been covered.

Regards
Søren Højsgaard


	[[alternative HTML version deleted]]


