These functions and methods facilitate working with integer64 objects stored in matrices. As ever, the primary motivation for having tailor-made functions here is that R's methods often receive input from bit64 and treat the vectors as doubles, leading to unexpected and/or incorrect results.
colSums(x, na.rm = FALSE, dims = 1L)
# Default S3 method
colSums(x, na.rm = FALSE, dims = 1L)
# S3 method for class 'integer64'
colSums(x, na.rm = FALSE, dims = 1L)
rowSums(x, na.rm = FALSE, dims = 1L)
# Default S3 method
rowSums(x, na.rm = FALSE, dims = 1L)
# S3 method for class 'integer64'
rowSums(x, na.rm = FALSE, dims = 1L)
# S3 method for class 'integer64'
aperm(a, perm, ...)An array of integer64 numbers.
Same interpretation as in colSums().
Passed on to aperm().
Passed on to subsequent methods.
As of now, the colSums() and rowSums() methods are implemented
as wrappers around equivalent apply() approaches, because
re-using the default routine (and then applying integer64 to the
result) does not work for objects with missing elements. Ideally
this would eventually get its own dedicated C routine mimicking
that of colSums() for integers; feature requests and PRs welcome.
aperm() is required for apply() to work, in general, otherwise
FUN gets applied to a class-stripped version of the input.
A = as.integer64(1:6)
dim(A) = 3:2
colSums(A)
#> integer64
#> [1] 6 15
rowSums(A)
#> integer64
#> [1] 5 7 9
aperm(A, 2:1)
#> integer64
#> [,1] [,2] [,3]
#> [1,] 1 2 3
#> [2,] 4 5 6
#> attr(,"class")
#> [1] matrix array