1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > r语言中调用c 程序 如何在R程序包中调用C函数

r语言中调用c 程序 如何在R程序包中调用C函数

时间:2021-03-19 13:11:52

相关推荐

r语言中调用c 程序 如何在R程序包中调用C函数

程序包名称为pareto。这是.c文件中src目录:如何在R程序包中调用C函数

#include

#include

#include "Rinternals.h"

#include "R_ext/Rdynload.h"

static void dpareto(double *x, double *a, double *b, int *n, int *islog,

double *den){

int length = n[0];

int i;

int isLog = islog[0];

for (i = 0; i < length; i++){

if (a[i] > 0 && b[i] > 0) {

if (x[i] > a[i])

den[i] = log(b[i]) + b[i] * log(a[i]) - (b[i] + 1) * log(x[i]);

else

den[i] = R_NegInf;

if (!isLog)

den[i] = exp(den[i]);

}

else {

den[i] = R_NaN;

}

}

}

static R_CMethodDef DotCEntries[] = {

{"dpareto", (DL_FUNC) dpareto, 6},

{NULL}

};

void R_init_pareto(DllInfo *info)

{

R_registerRoutines(info, DotCEntries, NULL, NULL, NULL);

}

在R目录,相应.R文件是:

#' @useDynLib pareto

#' @export

dpareto

nx

na

nb

n

if (nx < n) x

if (na < n) a

if (nb < n) b

rt

as.integer(log), den = double(n), PACKAGE="pareto")

rt$den

}

记录了roxygen后,NAMESPACE有:

export(dpareto)

useDynLib(pareto)

但是这个软件包不能通过检查,并且保持基因不变速度错误消息:

"dpareto" not available for .C() for package "pareto"

Calls: dpareto -> .C

我真的不知道哪一步我犯了一个错误。

-03-07

Bs He

+0

'.c'函数是正确的,我成功地在一个包内调用。 –

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。