[Rd] What algorithm is R using to calculate mean?
Zach Harrington
zach.harrington at gmail.com
Thu Jul 25 21:44:04 CEST 2013
I am curious to know what algorithm R's mean function uses. Is there
some reference to the numerical properties of this algorithm?
I found the following C code in summary.c:do_summary():
case REALSXP:
PROTECT(ans = allocVector(REALSXP, 1));
for (i = 0; i < n; i++) s += REAL(x)[i];
s /= n;
if(R_FINITE((double)s)) {
for (i = 0; i < n; i++) t += (REAL(x)[i] - s);
s += t/n;
}
REAL(ans)[0] = s;
break;
It seems to do a straight up mean:
for (i = 0; i < n; i++) s += REAL(x)[i];
s /= n;
Then it adds what i assume is a numerical correction which seems to be
the mean difference from the mean of the data:
for (i = 0; i < n; i++) t += (REAL(x)[i] - s);
s += t/n;
I haven't been able to track this algorithm down anywhere (mean is not a
great search term).
Any help would be much appreciated,
Zach Harrington
More information about the R-devel
mailing list