pnorm
的 R 源代码如下:
function (q, mean = 0, sd = 1, lower.tail = TRUE, log.p = FALSE)
.Call(C_pnorm, q, mean, sd, lower.tail, log.p)
所以,从技术上讲,输入"pnorm"确实会显示源代码。然而,更有用的是:`pnorm`的核心是用C编写的,所以在前一个问题中的建议
在R中查看源代码只是次要有用的(大部分集中在命名空间中隐藏的函数上)。
Uwe Ligges在R新闻
文章中,访问源代码(第43页)是一个很好的参考资料。从那份文件中可以得到以下信息:
当查看R源代码时,有时会出现对以下函数之一的调用:
.C()
、
.Call()
、
.Fortran()
、
.External()
、
.Internal()
和
.Primitive()
。这些函数是调用编译代码中的入口点,如共享对象、静态库或动态链接库。因此,如果需要完全理解代码,就必须查看编译代码的源代码。
...
第一步是在文件‘$R HOME/src/main/names.c’中查找入口点,如果调用的R函数是
.Primitive()
或
.Internal()
。下面的示例中就是这样做的,该示例实现了‘simple’ R函数
sum()
。
(重点是因为您询问的确切函数(
sum
)在Ligges的文章中有所涉及。)
根据您对代码的深入程度的要求,下载并解压源代码可能是值得的,正如Ligges所建议的那样(例如,您可以使用命令行工具如
grep
来搜索源代码)。如果只是进行一般的检查,您可以通过R的
Subversion服务器或
Winston Chang的github镜像或
R-svn github镜像在线查看源代码(这里的链接是具体指向
src/nmath/pnorm.c
)。(要猜测正确的查找位置
src/nmath/pnorm.c
,需要对R源代码的结构有一定的了解。)
mean
和
sum
都是在
summary.c中实现的。
pnorm
不属于同一类别。请尝试使用mean.default
进行 R 代码,并使用 https://github.com/wch/r-source/blob/trunk/src/main/summary.c 进行 C 代码。并且确保阅读上面链接的 Uwe Ligges 的文章! - Ben Bolkerstl
的源代码,它调用了这一行:z <- .Fortran(C_stl, x, n, as.integer(period), as.integer(s.window)
。因此,我通过关键字C_stl
搜索上面链接的Github镜像,但没有找到。然而,当我搜索stl
时,有一个名为stl.f
的文件,这就是我想要找的。要点是.c或.f文件名可能与被调用的函数名不完全相同。 - yuqli.Internal
(我使用R已有大约20年的经验,并从未在自己的代码中使用过它,至少我没有记得...)。如果您有更具体/聚焦的问题,请随时发布一个新问题... - Ben Bolker