Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 回收“rbinom”输入的代码在哪里?_C_R_Cran - Fatal编程技术网

C 回收“rbinom”输入的代码在哪里?

C 回收“rbinom”输入的代码在哪里?,c,r,cran,C,R,Cran,从文档中,rbinom接受三个参数,n、size和prob。对的回答指出,如果prob是一个向量,它将被循环使用,直到达到n。我想找到那个密码 R源立即调用C函数: > rbinom function (n, size, prob) .Call(C_rbinom, n, size, prob) <bytecode: 0x113526220> <environment: namespace:stats> 搜索,我找到的唯一一个相关的C文件,但我不明白。这就是循环发

从文档中,
rbinom
接受三个参数,
n
size
prob
。对的回答指出,如果
prob
是一个向量,它将被循环使用,直到达到
n
。我想找到那个密码

R源立即调用C函数:

> rbinom
function (n, size, prob) 
.Call(C_rbinom, n, size, prob)
<bytecode: 0x113526220>
<environment: namespace:stats>

搜索,我找到的唯一一个相关的C文件,但我不明白。这就是循环发生的地方,还是我遗漏了另一个函数定义?

在堆栈溢出的帮助指导下,我成功地回答了这个问题,并感到满意。我不确定细节,但这里有:

>rbinom

打这个电话


rbinom我对问题进行了编辑,大大缩短了问题的篇幅,并将重点放在您的
rbinom
问题上,因为“查找C代码”是在(以前的)副本中解决的。我的C不足以在代码浏览后回答,但我认为答案与“其他相关的看似C文件”有关,它似乎在调用
rbinom
之前对2参数族的采样进行一般处理。此外,dll位也是一种干扰。在为windows编译时,C代码生成您找到的DLL文件。我建议在github上搜索代码,而不是在本地搜索,这是一个更好的界面,除非你有一个很好的IDE和大量的实践使用它。谢谢你,有了这个帮助,我也许可以自己把它整理出来。当你甚至不知道该问什么的时候,这是很难的。你的第二个C文件就是答案:解决方案是你所指的
random2
函数和
DEFRAND2\u INT
宏的组合……就在这里。第185行:`rx=fn(ra[i%na],rb[i%nb]);`解决方案来自您将我指向第二个文件,然后我阅读预处理器(不区分上下文的文本替换)。我仍然没有足够的信心发布答案。我应该结束这个问题,深入研究它,还是等待了解更多C的人给出一个好的回答?
double rbinom(double nin, double pp)
{
...
}
DEFRAND2_INT(rbinom)
#define DEFRAND2_INT(name) \
    SEXP do_##name(SEXP sn, SEXP sa, SEXP sb) { \
        return random2(sn, sa, sb, name, INTSXP); \
    }