Vector of strictly positive integers corresponding to
dimensions to be summed over
drop
Boolean, with default TRUE meaning to drop the
summed dimensions, and FALSE meaning to retain them.
...
Further arguments, currently ignored
Author
Robin K. S. Hankin
Details
Function asum.spray() is the method for asum(). This
takes a spray, and a vector of integers corresponding to dimensions to
be summed over.
Function asum_inverted() is the same, but takes a vector of
integers corresponding to dimensions not to sum over. This function is
here because there is nice C++ idiom for it.
Function process_dimensions() ensures that the dims
argument is consistent with the spray S and returns a cleaned
version thereof.
S <- spray(matrix(sample(0:2,60,replace=TRUE),ncol=3),addrepeats=TRUE)
S
asum(S,1)
asum(S,1:2)
asum(S,1:2,drop=FALSE)
asum(S,c(1,3)) == asum_inverted(S,2)