Skip to content

Using as.integer(NA) in the .C function

3 messages · Christophe Genolini, Berend Hasselman

#
Hi the list,
I am including some C code in a R program using the .C interface. I want to
deal with NA values, but the result is strange:

--- 8< ------------ C code -----------
void hein(int *a, int *b, int* c){
  *c = (*a + *b);
}
--- 8< -----------------------------------
--- 8< ------------- R code -----------
[1] -2147483647
--- 8< ---------------------------------
The result should be NA, isn't it? What wrong il my code?

Christophe



--
View this message in context: http://r.789695.n4.nabble.com/Using-as-integer-NA-in-the-C-function-tp4666470.html
Sent from the R help mailing list archive at Nabble.com.
#
On 07-05-2013, at 15:30, cgenolin <cgenolin at u-paris10.fr> wrote:

            
Why?
Read the manual "Writing R Extensions".
See section 5.10.3 and section 6.4 in that manual (I'm referring to the pdf available on CRAN for R-3.0.0).
There may be more references in the manual but these were the first I found by searching, which you should have done.

Berend
#
Damm... I am reading the WRE, but I am only at page 83. I start to try to
play with NAOK to early.

Anyway, exactly the same function for numeric instead of integer will give
different results:

--- 8< ------------ C code -----------
void hein2(double *a, double *b, double* c){
*c = (*a + *b);
}
--- 8< -----------------------------------
--- 8< ------------- R code -----------
 .C("hein2",as.numeric(NA),as.numeric(1),as.numeric(1),NAOK=TRUE)[[3]]
[1] NA
--- 8< --------------------------------- 
That's why I find the results of "hein" stranges...

Christophe



--
View this message in context: http://r.789695.n4.nabble.com/Using-as-integer-NA-in-the-C-function-tp4666470p4666476.html
Sent from the R help mailing list archive at Nabble.com.