[Rd] .C and .Call: convolve example not working

Lars Wißler jahftw at googlemail.com
Thu Aug 11 15:06:07 CEST 2011

Dear R users,

I want to call C code via the .C or .Call interface. This works fine
with integer values but using doubles the array received in C will be
set to zeros.

I have tried the convolve examples (Writing R extensions, chapter 5.2)
and still the resulting array consists of zeros.

My code (shortened for my purposes. Original did not work either):

a=array(1, c(4))
b=array(3, c(4))




void convolve(double* a, double* b){
     int i;

     for(i=0;i<4;i++) Rprintf("a: %d", a[i]);
     for(i=0;i<4;i++) Rprintf("b: %d", b[i]);



[1] "starting C code..."
[1] 1 1 1 1
[1] 3 3 3 3
a: 30467528
a: 0
a: 0
a: 0
b: 0
b: 0
b: 0
b: 0

Any suggestions as to why this is happening and what I am doing wrong
would be much appreciated. I have tried .Call with conversion SEXP to
double with REAL(a)/REAL(b) with the same results (the entry first
entry of a has a different number, but is huge as well). I am quite
astonished with the results I am getting.

Thanks and regards,

Lars Wissler

More information about the R-devel mailing list