Yeah, I do realize that this answer gets to you 12 years too late, however, it may be helpful to others in future.
I have been struggling with the same issue. When analysing the source code (https://svn.r-project.org/R-packages/trunk/nlme/R/nlme.R)
I found out that the E matrix needs rownames referring to the random effect of each group in the dataset, something like:
rownames(E) <- c("subjectname1","subjectname2","subjectname3",.....).
Then your code should run perfectly OK.
data <- data.frame(a=c(1,2,3,4,5,1,2,3,4,5,1,2,3,4,5),
NOTICE: The information contained in this electronic mail message is intended only for the personal and confidential
use of the designated recipient(s) named above. This message may be an attorney-client communication, may be protected
by the work product doctrine, and may be subject to a protective order. As such, this message is privileged and
confidential. If the reader of this message is not the intended recipient or an agent responsible for delivering it to
the intended recipient, you are hereby notified that you have received this message in error and that any review,
dissemination, distribution, or copying of this message is strictly prohibited. If you have received this
communication in error, please notify us immediately by telephone and e-mail and destroy any and all copies of this
message in your possession (whether hard copies or electronically stored copies). Thank you.