回收 rbinom 输入的代码在哪里?
Where is the code for recycling `rbinom` inputs?
根据文档,rbinom
采用三个参数,n
、size
和 prob
。 的答案是说如果 prob
是一个向量,它会被循环直到达到 n
。我想找到那个代码!
R 源代码立即调用 C 函数:
> rbinom
function (n, size, prob)
.Call(C_rbinom, n, size, prob)
<bytecode: 0x113526220>
<environment: namespace:stats>
正在 Github 镜像中搜索 R gets me the this rbinom
C function,但它只需要两个参数。 n
在哪里? prob
到n
的长度在哪里回收?我在这个函数定义中找不到它。
double rbinom(double nin, double pp)
{
...
}
正在搜索 all C files containing rbinom
, the only other relevant-seeming C file I found is this one,但我不明白。这是回收发生的地方,还是我遗漏了另一个函数定义?
在 stack overflow 的帮助指导下,我成功地回答了这个问题。我不确定细节,但这里是:
> 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); \
}
根据文档,rbinom
采用三个参数,n
、size
和 prob
。 prob
是一个向量,它会被循环直到达到 n
。我想找到那个代码!
R 源代码立即调用 C 函数:
> rbinom
function (n, size, prob)
.Call(C_rbinom, n, size, prob)
<bytecode: 0x113526220>
<environment: namespace:stats>
正在 Github 镜像中搜索 R gets me the this rbinom
C function,但它只需要两个参数。 n
在哪里? prob
到n
的长度在哪里回收?我在这个函数定义中找不到它。
double rbinom(double nin, double pp)
{
...
}
正在搜索 all C files containing rbinom
, the only other relevant-seeming C file I found is this one,但我不明白。这是回收发生的地方,还是我遗漏了另一个函数定义?
在 stack overflow 的帮助指导下,我成功地回答了这个问题。我不确定细节,但这里是:
> 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); \
}