[R] .C help
Tuszynski, Jaroslaw W.
JAROSLAW.W.TUSZYNSKI at saic.com
Fri Sep 30 22:24:11 CEST 2005
See http://www.stats.uwo.ca/faculty/murdoch/software/compilingDLLs/ and "R
Installation and Administration" manual for details that will have to be
followed very precisely.
My own 2 cents below should be taken as fuzzy recollections, compared to
detailed directions in 2 sources above. I do not know if they are the
easiest or even correct, but they work.
There are 2 ways to compile that I tried (both use MinGW compiler):
- compile C into dll. Copy dll to the same directory as R functions.
I was compiling on WIN XT machine by double clicking on "any-name.bat"
text file containing:
cl /MT /Ox /D "WIN32" /c runfunc.c
link /dll /EXPORT:runquantile /EXPORT:runmean /EXPORT:runmad
/out:runfunc.dll *.obj
pause
My code was in "runfunc.c". C Functions I was planning on calling were:
"runquantile" "runmean" "runmad". DLL name was "runfunc.dll"
- follow the steps as if you were building a package (even if you are not
planing on releasing it). This way was much easier, but only after I
installed many other tools needed for package instalation/compilation. After
everything was correctly set up the actual package compilation is done by
double-clicking on "C:\programs\R\rw2011\src\gnuwin32\install_caTools.bat"
text file containing:
RCMD install C:/programs/R/rw2011/src/library/caTools
pause
Both of those approaches (I think) required R beeing installed in a path
with no spaces (for example R can not be installed in default spot
"c:\Program Files\R" since "program files" have space between two words.
Also I remember having a lot of trouble ordering directories on my PATH
(envirinmental variable - see "my computer/properties/advanced/Environment
Variables").
Jarek
====================================================\====
Jarek Tuszynski, PhD. o / \
Science Applications International Corporation <\__,|
(703) 676-4192 "> \
Jaroslaw.W.Tuszynski at saic.com ` \
-----Original Message-----
From: r-help-bounces at stat.math.ethz.ch
[mailto:r-help-bounces at stat.math.ethz.ch] On Behalf Of Elizabeth Lawson
Sent: Friday, September 30, 2005 2:46 PM
To: r-help at stat.math.ethz.ch
Subject: [R] .C help
Hi,
I am hoping some one can help me. I am learning to use C and would like to
learn how to call c code in R. I have look at Writing R Extensions
and I tried to copy the example on page 38
void convolve(double *a, int *na, double *b, int *nb, double *ab)
{
int i, j, nab = *na + *nb - 1;
for(i = 0; i < nab; i++)
ab[i] = 0.0;
for(i = 0; i < *na; i++)
for(j = 0; j < *nb; j++)
ab[i + j] += a[i] * b[j];
}
called from R by
conv <- function(a, b)
.C("convolve",
as.double(a),
as.integer(length(a)),
as.double(b),
as.integer(length(b)),
ab = double(length(a) + length(b) - 1))$ab
and I got the error "C" function name not in load table.
Do I need to compile the C code first?
Do I need a c copmiler at all?
Any suggestions for a begginner?
Thanks,
Elizabeth Lawson
I
---------------------------------
Click here to donate to the Hurricane Katrina relief effort.
[[alternative HTML version deleted]]
______________________________________________
R-help at stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide!
http://www.R-project.org/posting-guide.html
More information about the R-help
mailing list