Re: [R] Problem with C extension

From: Martin Maechler <maechler_at_stat.math.ethz.ch>
Date: Fri 19 Jan 2007 - 17:15:42 GMT

>>>>> "Markus" == Markus Schmidberger <schmidb@ibe.med.uni-muenchen.de>
>>>>> on Fri, 19 Jan 2007 15:02:31 +0100 writes:

    Markus> Hello,
    Markus> I try to write an extension in C, to get a faster functions.
    Markus> Therefore I have to add an element (vector) to a vector. The command in 
    Markus> R is very simple: x = c(x,a)
aka
	x <- c(x,a)

see that's why you'd probably rather stick with R a bit longer, and profile [-> help(Rprof)] your code and try to speedup quite a bit before thinking about using C ...

    Markus> But in C I have the problem to reallocate my vector for getting more     Markus> space. Everything I tried, I get a "Segmentation fault".

    Markus> So, how can I combine two vectors in C and give the result back to R     Markus> (return(x))?

and you have a copy of "Writing R Extensions" right in front of you, electronically at least, I mean?

To return the new vector via C's return() you'd definitely need to work with .Call() {which is a good thing but really not for C-beginners}, and that needs a bit time of reading the above manual "from cover to cover". Note that you probably should start with (5.8) on .Call.

I'm also tending to recommend even starting to peek into R's own C source, notably the header files (src/include/...), and maybe src/main/* in order to see how R objects ("SEXP"s) are handled, how you add names(), dimnames() etc internally..

Hoping that helps,
Martin Maechler, ETH Zurich

    Markus> Thanks
    Markus> Markus Schmidberger

    Markus> --
    Markus> Dipl.-Tech. Math. Markus Schmidberger



R-help@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 and provide commented, minimal, self-contained, reproducible code. Received on Sat Jan 20 04:26:19 2007

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.1.8, at Fri 19 Jan 2007 - 18:30:27 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help. Please read the posting guide before posting to the list.