Re: [R] Calling R from C (Windows)
Yes. Your looking at R_HOME (the installation directory), not the "directory of the sources". On Tue, Oct 16, 2012 at 10:08 AM, BayesForever wrote: > > I am trying to follow the instructions in section 8.2.2 of "Writing R > extensions", to learn how to call R from C. In this manual and at other > sites I see continual references to examples in "the tests/Embedding > directory of the sources". > > There is no directory named "Embedding" anywhere in my 2.13.1 install of R. > Am I missing components that I need to call R from C, or am I > misunderstanding the meaning of the tests/Embedding directory of the > sources? > > > > -- > View this message in context: > http://r.789695.n4.nabble.com/Calling-R-from-C-Windows-tp4646285.html > Sent from the R help mailing list archive at Nabble.com. > > __ > 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] Calling R from C (Windows)
I am trying to follow the instructions in section 8.2.2 of "Writing R extensions", to learn how to call R from C. In this manual and at other sites I see continual references to examples in "the tests/Embedding directory of the sources". There is no directory named "Embedding" anywhere in my 2.13.1 install of R. Am I missing components that I need to call R from C, or am I misunderstanding the meaning of the tests/Embedding directory of the sources? -- View this message in context: http://r.789695.n4.nabble.com/Calling-R-from-C-Windows-tp4646285.html Sent from the R help mailing list archive at Nabble.com. __ 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.
Re: [R] calling R from C
hey David:Newbie here. will avoid duplicates next time. thanks... -krishna --- On Sat, 6/25/11, David Winsemius wrote: From: David Winsemius Subject: Re: [R] calling R from C To: "Desi Ap" Cc: r-help@r-project.org Date: Saturday, June 25, 2011, 10:38 PM On Jun 25, 2011, at 11:18 AM, Desi Ap wrote: > I read R extensions on calling R within c code. I am on windows vista, cygwin > and R-2.13.0.I can compile & link the c code with following commands$gcc > -I/cygdrive/c/Progra~1/R/R-2.13.0/include -c -ggdb Rhello.c > gcc-L/cygdrive/c/Progra~1/R/R-2.13.0/bin/i386 -oRhello Rhello.o -lR > However I cant run the resulting .exe file with following command > LD_LIBRARY_PATH=/cygdrive/c/Progra~1/R/R-2.13.0/bin R_HOME=/cygdrive/c/Progra > ~1/R/R-2.13.0 ./Rhello.exe > I get a pop up window and it just hangs when I try to run exe file. I assume > calling R via c program on cygwin/windowsvista is known to be working. > if so, can some one comment on how to run above exe file. It would be courteous posting behavior to put people on notice that this is an identical question to one posed earlier at SO: http://stackoverflow.com/questions/6478761/problem-running-c-code-that-has-r-in-it --David Winsemius, MD West Hartford, CT [[alternative HTML version deleted]] __ 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.
Re: [R] calling R from C
On Sat, Jun 25, 2011 at 4:18 PM, Desi Ap wrote: > I read R extensions on calling R within c code. I am on windows vista, cygwin > and R-2.13.0.I can compile & link the c code with following commands$gcc > -I/cygdrive/c/Progra~1/R/R-2.13.0/include -c -ggdb Rhello.c > gcc-L/cygdrive/c/Progra~1/R/R-2.13.0/bin/i386 -oRhello Rhello.o -lR > However I cant run the resulting .exe file with following command > LD_LIBRARY_PATH=/cygdrive/c/Progra~1/R/R-2.13.0/bin R_HOME=/cygdrive/c/Progra > ~1/R/R-2.13.0 ./Rhello.exe > I get a pop up window and it just hangs when I try to run exe file. I assume > calling R via c program on cygwin/windowsvista is known to be working. > if so, can some one comment on how to run above exe file. > thanks-kris You need to read the documentation to discover that maybe you should be using the right tools. Namely MinGW and not Cygwin. Unless you've managed to compile the whole of R using cygwin of course... I hope having identical responses to mailing list messages and SO questions isn't as annoying as seeing identical questions posted to each is to everyone on the list... Barry __ 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.
Re: [R] calling R from C
On Jun 25, 2011, at 11:18 AM, Desi Ap wrote: I read R extensions on calling R within c code. I am on windows vista, cygwin and R-2.13.0.I can compile & link the c code with following commands$gcc -I/cygdrive/c/Progra~1/R/R-2.13.0/include -c - ggdb Rhello.c gcc-L/cygdrive/c/Progra~1/R/R-2.13.0/bin/i386 -oRhello Rhello.o -lR However I cant run the resulting .exe file with following command LD_LIBRARY_PATH=/cygdrive/c/Progra~1/R/R-2.13.0/bin R_HOME=/cygdrive/ c/Progra ~1/R/R-2.13.0 ./Rhello.exe I get a pop up window and it just hangs when I try to run exe file. I assume calling R via c program on cygwin/windowsvista is known to be working. if so, can some one comment on how to run above exe file. It would be courteous posting behavior to put people on notice that this is an identical question to one posed earlier at SO: http://stackoverflow.com/questions/6478761/problem-running-c-code-that-has-r-in-it -- David Winsemius, MD West Hartford, CT __ 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] calling R from C
I read R extensions on calling R within c code. I am on windows vista, cygwin and R-2.13.0.I can compile & link the c code with following commands$gcc -I/cygdrive/c/Progra~1/R/R-2.13.0/include -c -ggdb Rhello.c gcc-L/cygdrive/c/Progra~1/R/R-2.13.0/bin/i386 -oRhello Rhello.o -lR However I cant run the resulting .exe file with following command LD_LIBRARY_PATH=/cygdrive/c/Progra~1/R/R-2.13.0/bin R_HOME=/cygdrive/c/Progra ~1/R/R-2.13.0 ./Rhello.exe I get a pop up window and it just hangs when I try to run exe file. I assume calling R via c program on cygwin/windowsvista is known to be working. if so, can some one comment on how to run above exe file. thanks-kris [[alternative HTML version deleted]] __ 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.
Re: [R] Calling R from c in Windows XP
On 03/27/2010 07:53 AM, dkStevens wrote: > > I'm searching for answers to four questions (I've been searching the net for > hours...) > > In Windows XP, is it possible to call R functions from a c program? (I've > found examples for Linux/Unix but not Windows) > > If so, is there a simple example to get started using gcc with R-2.10.0? Up to this point, the answer is in Writing R Extensions, sections 8.1 and 8.2 (which has a kind of implicit dependency on 8.1). A minimal file might be embed_win.c: #include int main(int argc, char *argv[]) { Rf_initEmbeddedR(argc, argv); run_Rmainloop(); Rf_endEmbeddedR(0); return 0; } and after discovering appropriate compiler args with R CMD config --cppflags R CMD config --ldflags one might (modulo line wrapping in email clients :() Z:\Home\tmp>gcc -IC:/PROGRA~1/R/R-211~1.0DE/include -LC:/PROGRA~1/R/R-211~1.0DE/bin -lR embed_win.c and then Z:\Home\tmp>a --vanilla > x = 1:10 > q() There are more examples in https://svn.r-project.org/R/trunk/tests/Embedding Martin > > If so, is it possible to write a simple interface using a c dll to call R > functions from a Visual Basic.net program? > > If so, is there a simple example? > > Thanks to all -- Martin Morgan Computational Biology / Fred Hutchinson Cancer Research Center 1100 Fairview Ave. N. PO Box 19024 Seattle, WA 98109 Location: Arnold Building M1 B861 Phone: (206) 667-2793 __ 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.
Re: [R] Calling R from c in Windows XP
David, On 27 March 2010 at 10:08, dkStevens wrote: | Thanks for your prompt response. Apparently my problem is with my R or | Windows setup. When I followed the advice in your return email, here's | the result. I will eat my hat. What you show I had too -- you need to define the environment variable R_HOME which is used all over Makefile.win. I have this in there commented out: #R_HOME := $(shell R RHOME) as I couldn't get it to work. [ I one used 'R CMD ...' one gets R_HOME for free but not here. ] So my bad and please re-try with R_HOME | I've been an R user for a number of years and have | installed/uninstalled several versions, plus I've installed MinGW, | RTools, gcc/gfortran, and a number of R-related packages. I must have | messed something up. Is there a pointer to the proper configuration? | Today I reinstalled RInside and Rcpp before trying the make below. | Thanks, and I'll be sure to post properly in the future. I didn't start | at RInside, I started with 'how can I call R from a c program. Sounds good. As per my previous email you may run into segfaults on Windows with the current version. Try backtracking to RInside 0.2.1 and Rcpp 0.7.1 (from the respective Archive/ sections on CRAN) which should work. We could then try to close the gap between those working versions and the current code to see what upsets. Or do what Romain and I do and stay on operating systems that have a lower- or uppercase X in their name. ;-) Sorry again for the earlier misinformation. I forgot this little detail. Lastly, we really should move this to rcpp-devel Dirk | Regards | | David Stevens | | | C:\Program Files\R\R-2.10.0\library\RInside\examples\standard>make -f | makefile.win | process_begin: CreateProcess(NULL, /bin/R CMD config --cppflags, ...) | failed. | process_begin: CreateProcess(NULL, /bin/R CMD config --ldflags, ...) failed. | process_begin: CreateProcess(NULL, /bin/R CMD config BLAS_LIBS, ...) failed. | process_begin: CreateProcess(NULL, /bin/R CMD config LAPACK_LIBS, ...) | failed. | /bin/R: not found | /bin/R: not found | /bin/R: not found | /bin/R: not found | process_begin: CreateProcess(NULL, /bin/R CMD config CXX, ...) failed. | process_begin: CreateProcess(NULL, /bin/R CMD config CPPFLAGS, ...) failed. | process_begin: CreateProcess(NULL, /bin/R CMD config CXXFLAGS, ...) failed. | process_begin: CreateProcess(NULL, /bin/R CMD config CXX, ...) failed. | Wall -s rinside_sample0.cpp -o rinside_sample0 | process_begin: CreateProcess(NULL, Wall -s rinside_sample0.cpp -o | rinside_sample0, ...) failed. | make (e=2): The system cannot find the file specified. | make: [rinside_sample0] Error 2 (ignored) | Wall -s rinside_sample1.cpp -o rinside_sample1 | process_begin: CreateProcess(NULL, Wall -s rinside_sample1.cpp -o | rinside_sample1, ...) failed. | make (e=2): The system cannot find the file specified. | make: [rinside_sample1] Error 2 (ignored) | Wall -s rinside_sample2.cpp -o rinside_sample2 | process_begin: CreateProcess(NULL, Wall -s rinside_sample2.cpp -o | rinside_sample2, ...) failed. | make (e=2): The system cannot find the file specified. | make: [rinside_sample2] Error 2 (ignored) | Wall -s rinside_sample3.cpp -o rinside_sample3 | process_begin: CreateProcess(NULL, Wall -s rinside_sample3.cpp -o | rinside_sample3, ...) failed. | make (e=2): The system cannot find the file specified. | make: [rinside_sample3] Error 2 (ignored) | Wall -s rinside_sample4.cpp -o rinside_sample4 | process_begin: CreateProcess(NULL, Wall -s rinside_sample4.cpp -o | rinside_sample4, ...) failed. | make (e=2): The system cannot find the file specified. | make: [rinside_sample4] Error 2 (ignored) | Wall -s rinside_sample5.cpp -o rinside_sample5 | process_begin: CreateProcess(NULL, Wall -s rinside_sample5.cpp -o | rinside_sample5, ...) failed. | make (e=2): The system cannot find the file specified. | make: [rinside_sample5] Error 2 (ignored) | Wall -s rinside_sample6.cpp -o rinside_sample6 | process_begin: CreateProcess(NULL, Wall -s rinside_sample6.cpp -o | rinside_sample6, ...) failed. | make (e=2): The system cannot find the file specified. | make: [rinside_sample6] Error 2 (ignored) | Wall -s rinside_sample7.cpp -o rinside_sample7 | process_begin: CreateProcess(NULL, Wall -s rinside_sample7.cpp -o | rinside_sample7, ...) failed. | make (e=2): The system cannot find the file specified. | make: [rinside_sample7] Error 2 (ignored) | Wall -s rinside_sample8.cpp -o rinside_sample8 | process_begin: CreateProcess(NULL, Wall -s rinside_sample8.cpp -o | rinside_sample8, ...) failed. | make (e=2): The system cannot find the file specified. | make: [rinside_sample8] Error 2 (ignored) | Wall -s rinside_test0.cpp -o rinside_test0 | process_begin: CreateProcess(NULL, Wall -s rinside_test0.cpp -o | rinside_test0, ...) failed. | make (e=2): The system cannot find the file specified
Re: [R] Calling R from c in Windows XP
Thanks for your prompt response. Apparently my problem is with my R or Windows setup. When I followed the advice in your return email, here's the result. I've been an R user for a number of years and have installed/uninstalled several versions, plus I've installed MinGW, RTools, gcc/gfortran, and a number of R-related packages. I must have messed something up. Is there a pointer to the proper configuration? Today I reinstalled RInside and Rcpp before trying the make below. Thanks, and I'll be sure to post properly in the future. I didn't start at RInside, I started with 'how can I call R from a c program. Regards David Stevens C:\Program Files\R\R-2.10.0\library\RInside\examples\standard>make -f makefile.win process_begin: CreateProcess(NULL, /bin/R CMD config --cppflags, ...) failed. process_begin: CreateProcess(NULL, /bin/R CMD config --ldflags, ...) failed. process_begin: CreateProcess(NULL, /bin/R CMD config BLAS_LIBS, ...) failed. process_begin: CreateProcess(NULL, /bin/R CMD config LAPACK_LIBS, ...) failed. /bin/R: not found /bin/R: not found /bin/R: not found /bin/R: not found process_begin: CreateProcess(NULL, /bin/R CMD config CXX, ...) failed. process_begin: CreateProcess(NULL, /bin/R CMD config CPPFLAGS, ...) failed. process_begin: CreateProcess(NULL, /bin/R CMD config CXXFLAGS, ...) failed. process_begin: CreateProcess(NULL, /bin/R CMD config CXX, ...) failed. Wall -s rinside_sample0.cpp -o rinside_sample0 process_begin: CreateProcess(NULL, Wall -s rinside_sample0.cpp -o rinside_sample0, ...) failed. make (e=2): The system cannot find the file specified. make: [rinside_sample0] Error 2 (ignored) Wall -s rinside_sample1.cpp -o rinside_sample1 process_begin: CreateProcess(NULL, Wall -s rinside_sample1.cpp -o rinside_sample1, ...) failed. make (e=2): The system cannot find the file specified. make: [rinside_sample1] Error 2 (ignored) Wall -s rinside_sample2.cpp -o rinside_sample2 process_begin: CreateProcess(NULL, Wall -s rinside_sample2.cpp -o rinside_sample2, ...) failed. make (e=2): The system cannot find the file specified. make: [rinside_sample2] Error 2 (ignored) Wall -s rinside_sample3.cpp -o rinside_sample3 process_begin: CreateProcess(NULL, Wall -s rinside_sample3.cpp -o rinside_sample3, ...) failed. make (e=2): The system cannot find the file specified. make: [rinside_sample3] Error 2 (ignored) Wall -s rinside_sample4.cpp -o rinside_sample4 process_begin: CreateProcess(NULL, Wall -s rinside_sample4.cpp -o rinside_sample4, ...) failed. make (e=2): The system cannot find the file specified. make: [rinside_sample4] Error 2 (ignored) Wall -s rinside_sample5.cpp -o rinside_sample5 process_begin: CreateProcess(NULL, Wall -s rinside_sample5.cpp -o rinside_sample5, ...) failed. make (e=2): The system cannot find the file specified. make: [rinside_sample5] Error 2 (ignored) Wall -s rinside_sample6.cpp -o rinside_sample6 process_begin: CreateProcess(NULL, Wall -s rinside_sample6.cpp -o rinside_sample6, ...) failed. make (e=2): The system cannot find the file specified. make: [rinside_sample6] Error 2 (ignored) Wall -s rinside_sample7.cpp -o rinside_sample7 process_begin: CreateProcess(NULL, Wall -s rinside_sample7.cpp -o rinside_sample7, ...) failed. make (e=2): The system cannot find the file specified. make: [rinside_sample7] Error 2 (ignored) Wall -s rinside_sample8.cpp -o rinside_sample8 process_begin: CreateProcess(NULL, Wall -s rinside_sample8.cpp -o rinside_sample8, ...) failed. make (e=2): The system cannot find the file specified. make: [rinside_sample8] Error 2 (ignored) Wall -s rinside_test0.cpp -o rinside_test0 process_begin: CreateProcess(NULL, Wall -s rinside_test0.cpp -o rinside_test0, ...) failed. make (e=2): The system cannot find the file specified. make: [rinside_test0] Error 2 (ignored) Wall -s rinside_test1.cpp -o rinside_test1 process_begin: CreateProcess(NULL, Wall -s rinside_test1.cpp -o rinside_test1, ...) failed. make (e=2): The system cannot find the file specified. make: [rinside_test1] Error 2 (ignored) Dirk Eddelbuettel [via R] wrote: > > On 27 March 2010 at 09:02, dkStevens wrote: > | This may simply expose my ignorance in this type of coding, but, > | unfortunately it's not that simple because I did using the RInside.h > and > | received several screens of error messages from gcc telling me that it > | couldn't find the include file and the scores of additional include > files > | that rinside.h referred to. After much editing to point to these files > | those error messages went away but more screens of error messages > followed. > | This using the four-line 'hello world' example that is provided by the > | RInside authors. So I'm faced with hours of chasing these down or > finding a > | simpler example. I'd rather the latter, hence my post. > > Try to look inside the installed package RInside and to fine the > directory > examples/ -- it cont
Re: [R] Calling R from c in Windows XP
On 27 March 2010 at 09:02, dkStevens wrote: | This may simply expose my ignorance in this type of coding, but, | unfortunately it's not that simple because I did using the RInside.h and | received several screens of error messages from gcc telling me that it | couldn't find the include file and the scores of additional include files | that rinside.h referred to. After much editing to point to these files | those error messages went away but more screens of error messages followed. | This using the four-line 'hello world' example that is provided by the | RInside authors. So I'm faced with hours of chasing these down or finding a | simpler example. I'd rather the latter, hence my post. Try to look inside the installed package RInside and to fine the directory examples/ -- it contains a directory standard/ with nine example files rinside_sample[0-8] plus two further tests (and another directory mpi/ which we ignore for now) On a correctly setup computer, building the examples programs in the directory examples/standard is as easy as saying make -f Makefile.win # you need to point make to the Windows makefile which builds all executables (on my windows box at work). No editing required. This is getting off-topic for r-help as you are asked by the posting guide to contact package authors (ie Romain or me). We usually suggest to take these RInside discussions to the rcpp-devel list --- see the R-Forge pages for Rcpp. Dirk -- Registration is open for the 2nd International conference R / Finance 2010 See http://www.RinFinance.com for details, and see you in Chicago in April! __ 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.
Re: [R] Calling R from c in Windows XP
On 27 March 2010 at 11:50, Khanh Nguyen wrote: | What examples are you talking about. You only need to include | ... More information is here | http://dirk.eddelbuettel.com/code/rinside.html Khanh is quite correct: RInside is self-contained. It also doesn't get much simpler than the examples we show. | The other external thing you need is the Rcpp package, which you can | do with install.packages('Rcpp') It used to have a Suggests: on Rcpp but now has a Depends: on it. That said, a few things: - David probably chose to ignore the big bold signs that tell him to use gcc (in the mingw implementation). Insisting on visual whatever buys you nothing as R requires gcc and mingw. No ifs or buts. gcc/g++ it is. - We made a lot of changes between RInside 0.2.1 (which worked on Windows) and the current 0.2.2 for which the example build but then segfault. I suspect some initialization of static variables issue or something like it. I'd welcome debugging assistance from anyone with more interest in Windows than Romain and I have. - Again, a working example is provided by RInside 0.2.1, possibly coupled with a matching Rcpp release as e.g. 0.7.1 - Other simpler examples are provided in the R sources under tests/Embedding Dirk | On Sat, Mar 27, 2010 at 11:40 AM, dkStevens wrote: | > | > I've looked at this a bit and it seems ok, if not a little convoluted. We're | > trying to stay away from com objects, so I was hoping for something more | > direct. I've seen some examples (e.g. RInside) but can't get them to work | > -too many include files, etc. that I can't find. | > -- | > View this message in context: http://n4.nabble.com/Calling-R-from-c-in-Windows-XP-tp1693440p1693480.html | > Sent from the R help mailing list archive at Nabble.com. | > | > __ | > 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. -- Registration is open for the 2nd International conference R / Finance 2010 See http://www.RinFinance.com for details, and see you in Chicago in April! __ 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.
Re: [R] Calling R from c in Windows XP
This may simply expose my ignorance in this type of coding, but, unfortunately it's not that simple because I did using the RInside.h and received several screens of error messages from gcc telling me that it couldn't find the include file and the scores of additional include files that rinside.h referred to. After much editing to point to these files those error messages went away but more screens of error messages followed. This using the four-line 'hello world' example that is provided by the RInside authors. So I'm faced with hours of chasing these down or finding a simpler example. I'd rather the latter, hence my post. -- View this message in context: http://n4.nabble.com/Calling-R-from-c-in-Windows-XP-tp1693440p1693538.html Sent from the R help mailing list archive at Nabble.com. __ 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.
Re: [R] Calling R from c in Windows XP
What examples are you talking about. You only need to include ... More information is here http://dirk.eddelbuettel.com/code/rinside.html The other external thing you need is the Rcpp package, which you can do with install.packages('Rcpp') On Sat, Mar 27, 2010 at 11:40 AM, dkStevens wrote: > > I've looked at this a bit and it seems ok, if not a little convoluted. We're > trying to stay away from com objects, so I was hoping for something more > direct. I've seen some examples (e.g. RInside) but can't get them to work > -too many include files, etc. that I can't find. > -- > View this message in context: > http://n4.nabble.com/Calling-R-from-c-in-Windows-XP-tp1693440p1693480.html > Sent from the R help mailing list archive at Nabble.com. > > __ > 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.
Re: [R] Calling R from c in Windows XP
I have - but when I tried their simple example no luck - too many missing include files to chase down. I'm looking for something more direct, I guess, that I have a little control over. -- View this message in context: http://n4.nabble.com/Calling-R-from-c-in-Windows-XP-tp1693440p1693478.html Sent from the R help mailing list archive at Nabble.com. __ 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.
Re: [R] Calling R from c in Windows XP
I've looked at this a bit and it seems ok, if not a little convoluted. We're trying to stay away from com objects, so I was hoping for something more direct. I've seen some examples (e.g. RInside) but can't get them to work -too many include files, etc. that I can't find. -- View this message in context: http://n4.nabble.com/Calling-R-from-c-in-Windows-XP-tp1693440p1693480.html Sent from the R help mailing list archive at Nabble.com. __ 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.
Re: [R] Calling R from c in Windows XP
If you want to call R from within VB.NET you might want to look at the statconnDCOM server (available at rcom.univie.ac.at) It wraps R into a (D)COM server and therefore allows any (D)COM client to access R on windows. VB.NET is a (D)COM client. On 3/27/2010 3:53 PM, dkStevens wrote: > > I'm searching for answers to four questions (I've been searching the net for > hours...) > > In Windows XP, is it possible to call R functions from a c program? (I've > found examples for Linux/Unix but not Windows) > > If so, is there a simple example to get started using gcc with R-2.10.0? > > If so, is it possible to write a simple interface using a c dll to call R > functions from a Visual Basic.net program? > > If so, is there a simple example? > > Thanks to all -- Erich Neuwirth, University of Vienna Faculty of Computer Science Computer Supported Didactics Working Group Visit our SunSITE at http://sunsite.univie.ac.at Phone: +43-1-4277-39464 Fax: +43-1-4277-39459 __ 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.
Re: [R] Calling R from c in Windows XP
Have you looked at RInside ? -k On Sat, Mar 27, 2010 at 10:53 AM, dkStevens wrote: > > I'm searching for answers to four questions (I've been searching the net for > hours...) > > In Windows XP, is it possible to call R functions from a c program? (I've > found examples for Linux/Unix but not Windows) > > If so, is there a simple example to get started using gcc with R-2.10.0? > > If so, is it possible to write a simple interface using a c dll to call R > functions from a Visual Basic.net program? > > If so, is there a simple example? > > Thanks to all > -- > View this message in context: > http://n4.nabble.com/Calling-R-from-c-in-Windows-XP-tp1693440p1693440.html > Sent from the R help mailing list archive at Nabble.com. > > __ > 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] Calling R from c in Windows XP
I'm searching for answers to four questions (I've been searching the net for hours...) In Windows XP, is it possible to call R functions from a c program? (I've found examples for Linux/Unix but not Windows) If so, is there a simple example to get started using gcc with R-2.10.0? If so, is it possible to write a simple interface using a c dll to call R functions from a Visual Basic.net program? If so, is there a simple example? Thanks to all -- View this message in context: http://n4.nabble.com/Calling-R-from-c-in-Windows-XP-tp1693440p1693440.html Sent from the R help mailing list archive at Nabble.com. __ 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.
Re: [R] Calling R from C - part way there but need a push!
Maximillian Murphy wrote on 04/29/2008 11:19 AM: Dear All, I've read the manual on "Writing R Extensions" and in particular the part on calling R from C. (Most of the manual is about calling C from R, not the other way around.) The good news is that I can now call _some_ R from C, specifically the R functions which have C header files. However it isn't clear to me how to call R functions that are written in R. I imagine that there is a standard C function of the form Call_r_from_C("package name", "Rfunction name as a string", arg1, arg2, ...); where arg1 etc are standardised ways of representing R data structures in C. However I haven't been able to find such a function prototype in the R include/*.h files. See footnote (1). Can you point me in the right direction please? Is there a set of examples somewhere that I can peruse? Does R keep any state when being called from C? Should I think of it as being a co-process, so I can make consecutive calls to it and expect it to remember previous calls? I'm thinking of a sequence of calls such as "load library", "load R code from a file of my own", "set value of x", "make a call and read the values back into my C program"? Help is much appreciated. I would recommend studying the examples found in the tests/Embedding directory from the R sources. For instance, the following is from RNamedCall.c: /* Call the function foo() with 3 arguments, 2 of which are named. foo(pch="+", id = 123, c(T,F)) Note that PrintValue() of the expression seg-faults. We have to set the print name correctly. */ void bar1() { SEXP fun, pch; SEXP e; PROTECT(e = allocVector(LANGSXP, 4)); fun = findFun(install("foo"), R_GlobalEnv); if(fun == R_NilValue) { fprintf(stderr, "No definition for function foo. Source foo.R and save the session.\n"); UNPROTECT(1); exit(1); } SETCAR(e, fun); SETCADR(e, mkString("+")); SET_TAG(CDR(e), install("pch")); SETCADDR(e, ScalarInteger(123)); SET_TAG(CDR(CDR(e)), install("id")); pch = allocVector(LGLSXP, 2); LOGICAL(pch)[0] = TRUE; LOGICAL(pch)[1] = FALSE; SETCADDDR(e, pch); PrintValue(e); eval(e, R_GlobalEnv); SETCAR(e, install("foo")); PrintValue(e); R_tryEval(e, R_GlobalEnv, NULL); UNPROTECT(1); } Best, Jeff Regards, Max (1) The most likely include file is Rinterface.h and within that the most likely candidates seem to be: extern int (*ptr_R_ReadConsole)(const char *, unsigned char *, int, int); extern void (*ptr_R_WriteConsole)(const char *, int); extern void (*ptr_R_WriteConsoleEx)(const char *, int, int); but it turns out that they assume that R is running the terminal and these are requests to R to display or read from R's console. R isn't acting as the back end being given work and returning answers. (2) Googling "calling r from c" yields precisely five hits, most of which just point back at the R extensions document with vague "It's in there somewhere"'s. I've looked! (3) Leads suggested by help.search("C") Foreign(base): Foreign Function Interface Functions to make calls to compiled code that has been loaded into R. .Internal(base) Call an Internal Function '.Internal' performs a call to an internal code which is built in to the R interpreter. Only true R wizards should even consider using this function, and only R developers can add to the list of internal functions. (Definitely not me!) .Primitive(base)Call a "Primitive" Internal Function The advantage of '.Primitive' over '.Internal' functions is the potential efficiency of argument passing. (4) R code that I have called successfully is that with prototypes defined in e.g. include/R_ext/Applic.h __ 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. -- http://biostat.mc.vanderbilt.edu/JeffreyHorner __ 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.
Re: [R] Calling R from C - part way there but need a push!
I'm afraid I haven't quite got the hang of this yet. Here's a Hello World: #include #include #include #include extern int R_running_as_main_program; /* in ../unix/system.c */ int main(int ac, char **av) { SEXP aleph, beth; // R_running_as_main_program = 1; // A // Rf_initialize_R(ac, av); // B // Rf_mainloop(); // C // R_running_as_main_program = 0; // a // Rf_initialize_R(ac, av); // b // aleph = PROTECT(allocVector(VECSXP, 2)); // 1 // aleph = Rf_mkString("hoodunnit");// 2 // aleph = allocVector(REALSXP, 2); // 3 return 0; } The simple example of a front end given in Chapter 8 is obtained by uncommenting A, B and C, and that works fine. It gives an interactive shell. If instead I uncomment any of 1, 2 or 3 I have just a simple declaration and assignment similar to several I have found in the R source files. The only difference I can see is that I am running in main() rather than in a C function that is called by R. Yet if I try to run this I get a segfault. I reasoned that when starting R probably sets up some data structures that are needed so I tried inserting lines a and b, but I still get a segfault. Do you have any suggestions on how to proceed? { I need to be able to create SEXPs to feed eval(). I don't yet know what kind of SEXPs but I'll cross that bridge when I come to it! } Regards, Max __ 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.
Re: [R] Calling R from C - part way there but need a push!
On 29/04/2008 12:19 PM, Maximillian Murphy wrote: Dear All, I've read the manual on "Writing R Extensions" and in particular the part on calling R from C. (Most of the manual is about calling C from R, not the other way around.) The good news is that I can now call _some_ R from C, specifically the R functions which have C header files. However it isn't clear to me how to call R functions that are written in R. I imagine that there is a standard C function of the form Call_r_from_C("package name", "Rfunction name as a string", arg1, arg2, ...); Not really. eval() is the main function to call from C. You construct an R expression, then evaluate it. where arg1 etc are standardised ways of representing R data structures in C. However I haven't been able to find such a function prototype in the R include/*.h files. See footnote (1). Can you point me in the right direction please? Is there a set of examples somewhere that I can peruse? Section 5.10 (Evaluating R expressions from C) of the Writing R Extensions manual gives a couple of examples. Does R keep any state when being called from C? Should I think of it as being a co-process, so I can make consecutive calls to it and expect it to remember previous calls? I'm thinking of a sequence of calls such as "load library", "load R code from a file of my own", "set value of x", "make a call and read the values back into my C program"? The normal way to do it is to let R be in charge, and only occasionally call out to C: so then R keeps its state. What you are trying to do sounds more like writing a new front-end to R, which is much more involved: see Chapter 8 of that manual. Duncan Murdoch Help is much appreciated. Regards, Max (1) The most likely include file is Rinterface.h and within that the most likely candidates seem to be: extern int (*ptr_R_ReadConsole)(const char *, unsigned char *, int, int); extern void (*ptr_R_WriteConsole)(const char *, int); extern void (*ptr_R_WriteConsoleEx)(const char *, int, int); but it turns out that they assume that R is running the terminal and these are requests to R to display or read from R's console. R isn't acting as the back end being given work and returning answers. (2) Googling "calling r from c" yields precisely five hits, most of which just point back at the R extensions document with vague "It's in there somewhere"'s. I've looked! (3) Leads suggested by help.search("C") Foreign(base): Foreign Function Interface Functions to make calls to compiled code that has been loaded into R. .Internal(base) Call an Internal Function '.Internal' performs a call to an internal code which is built in to the R interpreter. Only true R wizards should even consider using this function, and only R developers can add to the list of internal functions. (Definitely not me!) .Primitive(base)Call a "Primitive" Internal Function The advantage of '.Primitive' over '.Internal' functions is the potential efficiency of argument passing. (4) R code that I have called successfully is that with prototypes defined in e.g. include/R_ext/Applic.h __ 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] Calling R from C - part way there but need a push!
Dear All, I've read the manual on "Writing R Extensions" and in particular the part on calling R from C. (Most of the manual is about calling C from R, not the other way around.) The good news is that I can now call _some_ R from C, specifically the R functions which have C header files. However it isn't clear to me how to call R functions that are written in R. I imagine that there is a standard C function of the form Call_r_from_C("package name", "Rfunction name as a string", arg1, arg2, ...); where arg1 etc are standardised ways of representing R data structures in C. However I haven't been able to find such a function prototype in the R include/*.h files. See footnote (1). Can you point me in the right direction please? Is there a set of examples somewhere that I can peruse? Does R keep any state when being called from C? Should I think of it as being a co-process, so I can make consecutive calls to it and expect it to remember previous calls? I'm thinking of a sequence of calls such as "load library", "load R code from a file of my own", "set value of x", "make a call and read the values back into my C program"? Help is much appreciated. Regards, Max (1) The most likely include file is Rinterface.h and within that the most likely candidates seem to be: extern int (*ptr_R_ReadConsole)(const char *, unsigned char *, int, int); extern void (*ptr_R_WriteConsole)(const char *, int); extern void (*ptr_R_WriteConsoleEx)(const char *, int, int); but it turns out that they assume that R is running the terminal and these are requests to R to display or read from R's console. R isn't acting as the back end being given work and returning answers. (2) Googling "calling r from c" yields precisely five hits, most of which just point back at the R extensions document with vague "It's in there somewhere"'s. I've looked! (3) Leads suggested by help.search("C") Foreign(base): Foreign Function Interface Functions to make calls to compiled code that has been loaded into R. .Internal(base) Call an Internal Function '.Internal' performs a call to an internal code which is built in to the R interpreter. Only true R wizards should even consider using this function, and only R developers can add to the list of internal functions. (Definitely not me!) .Primitive(base)Call a "Primitive" Internal Function The advantage of '.Primitive' over '.Internal' functions is the potential efficiency of argument passing. (4) R code that I have called successfully is that with prototypes defined in e.g. include/R_ext/Applic.h __ 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.