[Rd] for help on building a R package with several R function and a bunch of c, c++
alex46015 at yahoo.com
alex46015 at yahoo.com
Mon Mar 8 21:44:10 CET 2010
Yes! that is what I am looking for. When I post my question, I said I cannot catch the key point in "Writing R Extensions".
Follow your suggestion, I almost have reached my goal although I passed the R CMD check mypackage. Before I install it (I need ask UNIX adminstrator to do it), I check the package, I got the information
> dyn.load("tranptest.so")
> filenames<-c("Mrklist.txt","CCdata.txt","outputfile")
> param<-c(1,0,1,0,1,1)
> .C("tranptest",as.character(filenames),as.double(param))
*** caught segfault ***
address 0, cause 'memory not mapped'
Traceback:
1: .C("tranptest",as.character(filenames), as.double(param))
Do you have any clue about the error? I think it is very close tothe end.
Thank you so much . You save me a tons of time,
Alex
--- On Mon, 3/8/10, Simon Urbanek <simon.urbanek at r-project.org> wrote:
> From: Simon Urbanek <simon.urbanek at r-project.org>
> Subject: Re: [Rd] for help on building a R package with several R function and a bunch of c, c++
> To: alex46015 at yahoo.com
> Cc: "Romain Francois" <romain at r-enthusiasts.com>, r-devel at r-project.org, "Dirk Eddelbuettel" <edd at debian.org>
> Date: Monday, March 8, 2010, 12:53 PM
> Alex,
>
> On Mar 8, 2010, at 12:16 , alex46015 at yahoo.com
> wrote:
>
> > I built R package with only R code before, this is
> first time I build R package with mixed R code and C, C++
> code. I would try Rcpp on our center UNIX, before I ask the
> administrator to install it, I need confirm several issue
> are right. Thank you for you patient.
> >
> > 1, I change main function as a general function with
> certain name such as void tranptest(char* filename[],
> double* para[]), and copy this file and other related c,
> c++ h, program to /src, and removed makefile.
> >
>
> Yes, that's perfect - for the kind of usage you don't need
> Rcpp at all - R supports C++ sources out of the box. Just
> make sure your tranptest function is either in a .c file or
> you put
> extern "C"
> in front of it if it's in .cpp , e.g:
>
> foo.cpp:
> extern "C" void tranptest(char **fn, double *par) {
> ...
> }
>
>
> > 2, I noticed there is Makevars after I ran
> Rcpp.package.skeleton,
> > do I need modify this file before I run R CMD build?
> what I need do for rcpp_hello_world.cpp
> rcpp_hello_world.cpp? it is template file handled by the
> program or it is for me to edit it as template?
> >
> > 3, Do I need write a R function such as
> tranptest<-function(inputfile, ctlfile,outfile,
> param1,param2,param3)
> > {
> > filenames<-c(inputfile,ctlfile,outfile)
> > params<-as.vector(c(param1, param2,param3))
> > .C("tranptest",
> as.character(filenames),as.double(params))
> > }
> > before I run R CMD build? if so, that means I put this
> R function in /R?
> >
>
> yes, in R/foo.R (replace "foo" by any name you want)
>
>
> > 4, Do I need do anything to run library.dyname to load
> those complied objects?
>
> If you have a namespace just add
> useDynLib(foo)
> where "foo" is the name of your package. If you don't have
> a namespace (or don't kwno what that is ;)) just add a file
> R/zzz.R with the following content to your package:
> .First.lib <- function(libname, pkgname)
> library.dynam("foo", pkgname, libname)
> where "foo" is the name of your package.
>
> > Where I can make sure it successful and I can use
> .C("tranptest",....) in R before the wholepackage
> installed?
> >
>
> It's really simple - you don't need to install the package
> to test it. Assuming "foo" is the name of your package:
> Build the sources:
> R CMD SHLIB -o foo.so *.c*
>
> start R in the same directory:
> R
> # load the library you just compiled
> dyn.load("foo.so")
> # test your code
> .C("tranptest", c("file1", "file2"), as.double(1,2,3,4))
>
> Cheers,
> Simon
>
>
> >
> > Alex
> > --- On Mon, 3/8/10, Romain Francois <romain at r-enthusiasts.com>
> wrote:
> >
> >> From: Romain Francois <romain at r-enthusiasts.com>
> >> Subject: Re: [Rd] for help on building a R package
> with several R function and a bunch of c, c++
> >> To: alex46015 at yahoo.com
> >> Cc: r-devel at r-project.org,
> "Dirk Eddelbuettel" <edd at debian.org>
> >> Date: Monday, March 8, 2010, 2:47 AM
> >> Hi,
> >>
> >> Yes, the problem is with spaces in path names.
> This has
> >> been fixed and
> >> will appear as Rcpp 0.7.8 in a few days.
> >>
> >> If you are in a rush, you can build it from svn,
> or quote
> >> the path that
> >> is returned from CxxFlags.
> >>
> >> Feel free to get back to us with more questions,
> although
> >> I'd encourage
> >> you to use the dedicated Rcpp-devel mailing list
> :
> >> https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel
> >>
> >> Romain
> >>
> >> On 03/08/2010 04:20 AM, alex46015 at yahoo.com
> >> wrote:
> >>> Thank you for your help. So far what I
> did on
> >> my notebook as follows. My OS is windows7.
> >>> Â
> >>> I downloaded Rcpp windows version, and load
> >> library("Rcpp") then.
> >>> Â
> >>> 1, Change main funnction to f1.cpp, remove
> makefile.
> >>> 2 ,run
> >>
> Rcpp.package.skeleton(name="test",list=c("rec1.R","rect2.R"))
> >>> 3, edit  /man, /R, copied my exist fileÂ
> whch I
> >> have done sucessfully without any c++
> program
> >> before.
> >>> 4, copy f1.cpp and all other related
> cpp and c
> >> into /src/
> >>> 5. Rcmd build --binary test
> >>> Â
> >>> It showed------
> >>> Â
> >>> making DLL....
> >>> gcc
> >>
> -l“C:/PROGRA~2/R/R-210~1.1/include",“C:/PROGRA~2/R/R-210~1.1/bin/Rscript
> >> -e' Rcpp:::CxxxFlags<>'` -03 -Wall -std =gnu
> -999 -c
> >> cranbombind.c -o cranbombind.o
> >>> Â
> >>> gcc.exe:
> **\Documents/R/win-library/2.10/Rcpp/lib: No
> >> such file or directory...
> >>>
> >>> I checked the path, it did have C:\Users\alex
> >> **\Documents\R\win-library\2.10\Rcpp\lib
> >>> Â
> >>> I don't know how I can fix the problem. do you
> think
> >> it could be problem there is a space between my
> first name
> >> and last name..
> >>> Â
> >>> All I tried are on my own PC at home , I
> will tryon
> >> other  PC in my office.
> >>> Â
> >>> Do you have suggestion?. Thanks,
> >>> Â
> >>> Alex
> >>> --- On Sun, 3/7/10, Romain Francois<romain at r-enthusiasts.com>
> >> wrote:
> >>>
> >>>
> >>> From: Romain Francois<romain at r-enthusiasts.com>
> >>> Subject: Re: [Rd] for help on building a R
> package
> >> with several R function and a bunch of c, c++
> >>> To: alex46015 at yahoo.com
> >>> Cc: "Dirk Eddelbuettel"<edd at debian.org>,
> >> r-devel at r-project.org
> >>> Date: Sunday, March 7, 2010, 3:59 AM
> >>>
> >>>
> >>> On 03/06/2010 03:27 AM, alex46015 at yahoo.com
> >> wrote:
> >>>> I think the first question should be how
> to build
> >> a R function to call a bunch of C ,C++ which
> include one
> >> main program, and a makefile. My goal to build a R
> package
> >> will be next step.
> >>>
> >>> You should jump straight to making a package.
> You are
> >> making you life
> >>> difficult with this "main program&
> makefile"
> >> model.
> >>>
> >>> Install Rcpp and try to use the
> Rcpp.package.skeleton,
> >> this will create
> >>> a simple package that uses some C++ classes
> from Rcpp,
> >> as well as an R
> >>> function that calls them.
> >>>
> >>>> I read Rcpp , I am not sure ifÂ
> >> RcppResultSet can solve my problem or other
> function. Once I
> >> make sure it work I need ask UNIX adminstrator to
> install
> >> it.
> >>>
> >>> We don't know what your problem is. We can
> answer a
> >> question, but we
> >>> cannot guess the question for you.
> >>>
> >>> Rcpp works, please refer to our unit tests,
> for
> >> example look at this
> >>> vignette:
> >>> http://cran.r-project.org/web/packages/Rcpp/vignettes/Rcpp-unitTests.pdf
> >>>
> >>>> I think it shouldn't be very
> complex, as I
> >> know to build a R function easy with one C
> function.
> >>>>
> >>>> Thanks you for yout attention!
> >>>>
> >>>> Alex
> >>>>
> >>>> --- On Fri, 3/5/10, Dirk
> Eddelbuettel<edd at debian.org>Â
> >> wrote:
> >>>>
> >>>>
> >>>> From: Dirk Eddelbuettel<edd at debian.org>
> >>>> Subject: Re: [Rd] for help on building a R
> package
> >> with several R function and a bunch of c, c++
> >>>> To: alex46015 at yahoo.com
> >>>> Cc: r-devel at r-project.org
> >>>> Date: Friday, March 5, 2010, 8:25 PM
> >>>>
> >>>>
> >>>>
> >>>> On 5 March 2010 at 13:15, alex46015 at yahoo.com
> >> wrote:
> >>>> | Hope I can get quick help from here, I
> have a
> >> bunch of c, c++ included main function and
> makefile. It
> >> works well on both UNIX and windows. I tried to
> build R
> >> package which include this C++ program and several
> other R
> >> functions. These R function here are
> >> independent of c++ code. I prefer to
> define one R
> >> function to call this c++ program (main
> function).
> >>>> |
> >>>> | I know how to build R package with just
> R
> >> function, but I don't know how to handle those c++
> c code
> >> after I copied those code in
> ./src, I am
> >> reading manual "Writing R Extensions" , but I did
> n't catch
> >> the key point . Do you know any easy way to do it?
> ,
> >>>>
> >>>> When you asked _that exact same question_
> this
> >> morning on r-help, you got the
> >>>> following answer:
> >>>>
> >>>> Â Â Â Â From: Whit
> Armstrong<armstrong.whit at gmail.com>
> >>>> Â Â Â Â To: alex46015 at yahoo.com
> >>>> Â Â Â Â Cc: r-help at r-project.org
> >>>> Â Â Â Â Subject: Re: [R] for
> help on
> >> building a R package with several R function and a
> bunch of
> >> c, c++
> >>>> Â Â Â Â Date: Fri, 5 Mar 2010
> 10:33:54
> >> -0500
> >>>>
> >>>> Â Â Â Â Pick up Rcpp, make your
> life
> >> easier.
> >>>>
> >>>> Â Â Â Â http://dirk.eddelbuettel.com/code/rcpp.html
> >>>>
> >>>> Â Â Â Â -Whit
> >>>>
> >>>> Â Â Â Â On Fri, Mar 5, 2010 at
> 9:19
> >> AM,<alex46015 at yahoo.com>Â
> >> wrote:
> >>>> Â Â Â Â>Â Hope I can
> get quick
> >> help from here, I have a bunch of c, c++ included
> main
> >> function and makefile. It works well on both UNIX
> and
> >> windows. I tried to build R package which include
> this C++
> >> program and several other R functions. R
> function
> >> here are independent c++ code. I prefer to
> define
> >> one R function to call this c++ program.
> >>>> Â Â Â Â>
> >>>> Â Â Â Â>Â Do you know
> any easy
> >> way to do it? I am reading manual "Writing R
> Extensions", I
> >> didn't catch the key point. I know how to build R
> package
> >> with just R function, If I put all c++
> code and
> >> makefile in /src...what I need do?
> >>>> Â Â Â Â>
> >>>> Â Â Â Â>Â Thank you
> in
> >> advance!
> >>>> Â Â Â Â>
> >>>> Â Â Â Â>Â Alex
> >>>>
> >>>> Now, can you let us know
> >>>>
> >>>> Â Â Â a) what part of
> the
> >> answer was unclear to you, and
> >>>>
> >>>> Â Â Â b) what made
> you think
> >> you needed to repost _the identical question_
> here
> >>>>
> >>>> | Thank you in advance!
> >>>>
> >>>> You're welcome.
> >>>>
> >>>> Dirk
> >>
> >> --Romain Francois
> >> Professional R Enthusiast
> >> +33(0) 6 28 91 30 30
> >> http://romainfrancois.blog.free.fr
> >> |- http://tr.im/OIXN : raster images and RImageJ
> >> |- http://tr.im/OcQe : Rcpp 0.7.7
> >> `- http://tr.im/O1wO : highlight 0.1-5
> >>
> >>
> >
> >
> >
> >
> > ______________________________________________
> > R-devel at r-project.org
> mailing list
> > https://stat.ethz.ch/mailman/listinfo/r-devel
>
>
More information about the R-devel
mailing list