我很想知道R语言中mean函数使用的算法是什么。这个算法的数值特性有哪些参考资料吗?
我在summary.c:do_summary()中找到了以下的C代码:
我在summary.c:do_summary()中找到了以下的C代码:
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;
看起来这只是一个简单的平均数:
for (i = 0; i < n; i++) s += REAL(x)[i];
s /= n;
然后它添加了一个我认为是数值校正的步骤,这似乎是数据平均值与实际数据平均值之间的平均差:
for (i = 0; i < n; i++) t += (REAL(x)[i] - s);
s += t/n;
我无法在任何地方找到这个算法(mean不是一个很好的搜索词)。
任何帮助都将不胜感激。
.Internal
调用都映射在src/main/names.c
中。在该文件中搜索“mean”,您将看到调用它的C函数。然后,您可以搜索该C函数的源文件。请参见此问题。 - Joshua Ulrich