Functions is.empty() and is.zero() are synonyms. If spray
objects are interpreted as multivariate polynomials,
“is.zero()” is more intuitive, if sprays are interpreted
as sparse arrays, “is.empty()” is better (for me).
If spray() is passed a zero-row index matrix, the return value
does not remember the dimensionality of the input:
> dput(spray(matrix(0,1,5),0))
structure(list(index = NULL, value = NULL), class = "spray")
Arguably, the output should include the fact that we are dealing with a
5-dimensional array; but the index matrix is NULL so this
information is lost (note that the value is NULL too). However,
observe that the following works:
> a1 <- spray(matrix(0,1,5),0)
> a2 <- spray(t(1:5))
> a1+a2
val
1 2 3 4 5 = 1
>