On 06.10.2011 14:51, Jan van der Laan wrote:
An obvious reason might be that your second argument should be a pointer
to int.

As others have mentioned, you might want to have a look at Rccp and/or
inline. The documentation is good and I find it much easier to work with.

For example, your example could be written as:

library(Rcpp)
library(inline)

test <- cxxfunction(signature(x = "numeric" ) , '
Rcpp::NumericVector v(x);
Rcpp::NumericVector result(v.length());
for (int i = 0; i < v.length(); ++i) {
result[i] = v[i] + i;
}
return(result);
', plugin = "Rcpp" )



Oh, come on, this is now really too much of overkill.

Just make the original source


void test(double *b, int *l)
{
     int i;
     for(i=0; i < *l ; i++) b[i] += i;
}


which you would have know after reading the Wriiting R Extensions manual.

Best,
Uwe Ligges




HTH,

Jan


Quoting Grigory Alexandrovich <alexandrov...@mathematik.uni-marburg.de>:

Hello,

first thank you for your answers.

I did not read the whole pdf Writing R Extension, but I read this
strongly shortened introduction to this subject:

http://www.math.kit.edu/stoch/~lindner/media/.c.call%20extensions.pdf

I get the same error with this C-function:

void test(double * b, int l)
{
int i;
for(i=0; i < l ; i++) b[i] +=i;
}



I call it from R like this:

parameter = c(0,0,1,1,1,0,1.5,0.7,0,1.2,0.3);
.C("test", as.double(parameter), as.integer(11))

The programm crashes even in this simple case.
Where can be the error?

Thanks
Grigory Alexandrovich







Answer 1
Without knowing that C code, we cannot know. Have you read Writing R
Extensions carefully? I.e. take care with memory allocation and
printing as mentioned in the manual.

Uwe Ligges


Answer 2
This looks like a classic case of not reading the manual, and then
compounding it by not reading the posting guide. The manual would be
the "Writing R Extensions" pdf that comes with R or you can google
it. The posting guide is referenced at the bottom of this and every
other posting on this mailing list.
There are nearly an infinite variety of errors that can lead to a
"crash", so it is really unreasonable of you to pose this question
this way and expect constructive assistance.
---------------------------------------------------------------------------

Jeff Newmiller The ..... ..... Go Live...
DCN:<jdnew...@dcn.davis.ca.us> Basics: ##.#. ##.#. Live Go...
Live: OO#.. Dead: OO#.. Playing
Research Engineer (Solar/Batteries O.O#. #.O#. with
/Software/Embedded Controllers) .OO#. .OO#. rocks...1k
---------------------------------------------------------------------------

Sent from my phone. Please excuse my brevity.


Answer 3

It's impossible to say, with such minimal information, but a reasonable
guess is that there is a problem with the declaration of "x" and "y" in
foo.c. These would (I think) need to be declared as double *, not
double,
when foo is called from .C().

cheers,

Rolf Turner


Answer 4

Hi,

As other have said, it's very difficult to help you without an example
+ code to know what you are talking about.

That having been said, it seems as if you are just getting your feet
wet in this R <--> C bridge, and I'd recommend you checkout the "Rcpp"
and "inline" package to help make your life a lot easier ...

-steve








On 04.10.2011 14:04, Grigory Alexandrovich wrote:
Hello,

I wrote a function in C, which works fine if called from the
main-function in C.

But as soon as I try to call this function from R like .C('foo',
as.double(x), as.integer(y)), the programm crashes.

I created a dll with the cmd command R --arch x64 CMD SHLIB foo.c and
loaded it into R with dyn.load().

What can be the cause of such behaviour?
Again, the C-funcion itself works, but not if called from R.

Thanks
Grigory Alexandrovich

______________________________________________
R-help@r-project.org 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.

______________________________________________
R-help@r-project.org 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.




______________________________________________
R-help@r-project.org 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.

Reply via email to