I'm trying to figure out a way to call stats package's "dpois_raw" routine rather than the "dpois" wrapper using .Call .External or whatever means.
"dpois_raw" is not listed in the package environment (stats:::C_*)
nor when I do getDLLRegisteredRoutines("stats")
so I am probably out of luck, but I wonder whether someone R/C expert knows of a workaround.
The dpois_raw
routine is provided by the Rmath.h
header, and it doesn't appear to actually be exposed as part of the stats
package (or otherwise); however, it is made available to C / C++ code through the Rmath.h
header.
The simplest way to expose it would be with your own C / C++ code exposing that code, e.g. (code stub)
#include <R.h>
#include <Rmath.h>
SEXP my_dpois_raw(<...>) {
double result = dpois_raw(<...>);
return result;
}
This routine would then be callable from R with something like
.Call("my_dpois_raw", <...>)
See Hadley's r-pkgs section on using compiled code in R packages for some more information on including C / C++ code in an R package.