I have the following matrix operation
A %*% B %*% A
Where these matrices have the following dimensions and class attributes.
> dim(A)
[1] 5764 5764
> class(A)
[1] "dgCMatrix"
attr(,"package")
[1] "Matrix"
> dim(B)
[1] 5764 5764
> class(B)
[1] "dgCMatrix"
attr(,"package")
[1] "Matrix"
Now, when I do just the first part of the operation, A %*% B, this happens
rather quickly as you can see below.
> system.time(s1 <- A %*% B)
user system elapsed
3.49 0.36 3.87
> dim(s1)
[1] 5764 5764
> class(s1)
[1] "dgCMatrix"
attr(,"package")
[1] "Matrix"
But now, when I do the second part
s1 %*% A
R essentially hangs up and the computation doesn't complete. I am not quite
sure why this happens since both s1 and A are of the same class and dimensions
as those used in the operation A %*% B. I would intuitively expect computing
time to be equivalent. But, it clearly is not.
Am I missing something obvious here or is there possibly a better way to do this
computation?
Harold
> sessionInfo()
R version 2.12.2 (2011-02-25)
Platform: x86_64-pc-mingw32/x64 (64-bit)
locale:
[1] LC_COLLATE=English_United States.1252 LC_CTYPE=English_United States.1252
[3] LC_MONETARY=English_United States.1252 LC_NUMERIC=C
[5] LC_TIME=English_United States.1252
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] lme4_0.999375-38 Matrix_0.999375-46 lattice_0.19-13
loaded via a namespace (and not attached):
[1] grid_2.12.2 nlme_3.1-98 stats4_2.12.2
[[alternative HTML version deleted]]