我是靠谱客的博主 冷静河马,最近开发中收集的这篇文章主要介绍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

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

2017-03-07

Bs He

+0

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

最后

以上就是冷静河马为你收集整理的r语言中调用c 程序,如何在R程序包中调用C函数的全部内容,希望文章能够帮你解决r语言中调用c 程序,如何在R程序包中调用C函数所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(69)

评论列表共有 0 条评论

立即
投稿
返回
顶部