Dear Mr. Tuszynski,
I would like to request what I believe would be a beneficial update / patch
to the runmean() function in the caTools package.
Consider the following
R>> x = 1:100
R>> is.integer(x)
[1] TRUE
R>> library(caTools)
R>> head(runmean(x, 5, alg="exact"))
[1] 8.487983e-314 1.060998e-313 1.273197e-313 1.697597e-313 2.121996e-313
2.546395e-313
R>> head(runmean(x, 5, alg="C"))
[1] 2.0 2.5 3.0 4.0 5.0 6.0
R>> head(runmean(as.double(x), 5, alg="C"))
[1] 2.0 2.5 3.0 4.0 5.0 6.0
R>> head(runmean(as.double(x), 5, alg="exact"))
[1] 2.0 2.5 3.0 4.0 5.0 6.0
As you can see (and can be verified in the code), unlike the call for the
"C" algorithm, the "exact" algorithm does not make sure that
x is stored as
double resulting in occasional unexpected behavior.
## From caTools::runmean
if (alg == "exact") {
.C("runmean_exact", x, y, as.integer(n), as.integer(k), NAOK =
TRUE, DUP
= FALSE, PACKAGE = "caTools")
}
else if (alg == C"){
.C("runmean", as.double(x), y, as.integer(n), as.integer(k), NAOK
TRUE, DUP = FALSE, PACKAGE = "caTools")
}
Thanks once again for the fantastic package,
Michael Weylandt
cc: R-Help List.
[[alternative HTML version deleted]]