从文档中,rbinom
接受三个参数,n
、size
和prob
。对this question的回答是,如果prob
是一个向量,那么它将被循环使用,直到达到n
为止。我想找到密码!
R源立即调用C函数:
> rbinom
function (n, size, prob)
.Call(C_rbinom, n, size, prob)
<bytecode: 0x113526220>
<environment: namespace:stats>
在Github镜像中搜索Rgets me the this
rbinom
C function,但它只需要两个参数。n
在哪里?prob
到n
长度的循环在哪里?我在函数定义中找不到它。double rbinom(double nin, double pp)
{
...
}
搜索all C files containing
rbinom
,这是我找到的唯一一个其他相关的看似C文件,但我不明白。这是发生回收的地方,还是我遗漏了另一个函数定义? 最佳答案
在堆栈溢出的帮助指导下,我成功地回答了这个问题。我对细节不太清楚,但这里有:> rbinom
打这个电话rbinom <- function(n, size, prob) .Call(C_rbinom, n, size, prob)
位于第149行/src/library/stats/R/distn.R
这反过来又会叫static R_INLINE SEXP random2(SEXP sn, SEXP sa, SEXP sb, ran2 fn, SEXPTYPE type)
使用sn=n
、sa=size
、sb=prob
和fn=rbinom
。
在该函数中,您需要的代码位于ine 185:rx = fn(ra[i % na], rb[i % nb]);
上,这表明rbinom被称为回收size和prob参数。
random2和rbinom之间的连接是通过与random2函数位于同一文件中的预处理器建立的。
DEFRAND2_INT(rbinom)
#define DEFRAND2_INT(name) \
SEXP do_##name(SEXP sn, SEXP sa, SEXP sb) { \
return random2(sn, sa, sb, name, INTSXP); \
}