2016-09-22 2 views
0

Я пытаюсь выяснить способ вызова программы «dpois_raw» пакета статистики, а не обертки «dpois» с использованием .Call .External или любого другого средства.Как вызвать функцию dpois_raw C stats из R

«dpois_raw» не указан в упаковочной среде (stats:::C_*), но когда я делаю getDLLRegisteredRoutines("stats"), так что мне, вероятно, не повезло, но мне интересно, знает ли кто-то эксперт R/C об обходном пути.

ответ

1

Подпрограмма dpois_raw предоставлена ​​заголовком Rmath.h, и, по-видимому, он не является частью пакета stats (или иным образом); однако он доступен для кода C/C++ через заголовок Rmath.h.

Самый простой способ разоблачить это будет с вашим собственным кодом C/C++, отображающим этот код, например. (Код заглушки)

#include <R.h> 
#include <Rmath.h> 

SEXP my_dpois_raw(<...>) { 
    double result = dpois_raw(<...>); 
    return result; 
} 

Эта процедура будет затем вызывать из R с чем-то вроде r-pkgs разделе

.Call("my_dpois_raw", <...>) 

знакомства Хедли об использовании скомпилированного кода в R пакеты для некоторых больше информации о включении C код/​​C++ в пакете R.

+0

Yup, кажется, что взломать обертку - единственный способ ... Я прыгал за решением, которое будет работать из коробки, но кажется, что это невозможно. Спасибо. –

Смежные вопросы