|
Hi, Im not sure if this is the right place to post this. I am using Xubuntu
Karmic Koala and am trying to use the Rcpp package. I am testing it using a simple code that takes in a vector and adds 1 to each element: #include <Rcpp.h> // This file takes in a vector and adds one to each entry RcppExport SEXP addone(SEXP vec){ // create a local copy of vec Rcpp::NumericVector orig(vec); // create an output vector Rcpp::NumericVector vecout(orig.size()); for(i=0;i<orig.size();i++) { vecout[i] = orig[i]+1; } Rcpp::Pairlist res(Rcpp::Named("result",vecout),Rcpp::Named("original",orig)); return res; } I then try to use - R CMD SHLIB addone.cpp that didnt work. the error said there was no such file - "Rcpp.h" . Then i came across Dirk Eddelbeutel's beamer presentation and followed the suggestion to copy Rcpp.h to /usr/loca/include and libRcpp.so to /usr/local/lib Then i tried R CMD SHLIB addone.cpp again but got many errors. Here is a small selection: /usr/local/include/Rcpp.h:34:32: error: RcppDatetimeVector.h: No such file or directory /usr/local/include/Rcpp.h:35:23: error: RcppFrame.h: No such file or directory /usr/local/include/Rcpp.h:36:26: error: RcppFunction.h: No such file or directory /usr/local/include/Rcpp.h:37:22: error: RcppList.h: No such file or directory could someone help? im afraid im new both to linux and Rcpp! best, abhisek [[alternative HTML version deleted]] ______________________________________________ [hidden email] 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. |
|
Le 25/03/10 13:16, Abhisek a écrit :
> > Hi, Im not sure if this is the right place to post this. It is not. The Rcpp-devel mailing list is the right place: https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel > I am using Xubuntu > Karmic Koala and am trying to use the Rcpp package. I am testing it using a > simple code that takes in a vector and adds 1 to each element: > > #include<Rcpp.h> > > // This file takes in a vector and adds one to each entry > RcppExport SEXP addone(SEXP vec){ > > // create a local copy of vec > Rcpp::NumericVector orig(vec); > > // create an output vector > Rcpp::NumericVector vecout(orig.size()); > > for(i=0;i<orig.size();i++) { > vecout[i] = orig[i]+1; > } > > Rcpp::Pairlist > res(Rcpp::Named("result",vecout),Rcpp::Named("original",orig)); > > return res; > } You need some flags set up : export PKG_LIBS=`Rscript -e "Rcpp:::LdFlags()"` export PKG_CXXFLAGS=`Rscript -e "Rcpp:::CxxFlags()"` R CMD SHLIB addone.cpp also, your code is not correct since the i variable is not declared, so I get this when I try to compile it: addone.cpp: In function ‘SEXPREC* addone(SEXPREC*)’: addone.cpp:12: error: ‘i’ was not declared in this scope make: *** [addone.o] Error 1 The inline package can help you with this when prototyping your code, check the cfunction in the inline package, specifically its arguments "verbose" and "Rcpp". Personally I would code this using stl algorithms rather than raw looping: #include <Rcpp.h> template <typename T> inline T add_one( T x){ return x + 1 ; } // This file takes in a vector and adds one to each entry RcppExport SEXP addone(SEXP vec){ // original object Rcpp::NumericVector orig(vec); // output vector Rcpp::NumericVector vecout(orig.size()); std::transform( orig.begin(), orig.end(), vecout.begin(), add_one<double> ) ; return vecout ; } or maybe you don't even have to write the tedious add_one template and you can do it like this: #include <Rcpp.h> // This file takes in a vector and adds one to each entry RcppExport SEXP addone(SEXP vec){ // original object Rcpp::NumericVector orig(vec); // output vector Rcpp::NumericVector vecout(orig.size()); std::transform( orig.begin(), orig.end(), vecout.begin(), std::bind2nd( std::plus<double>(), 1.0 ) ) ; return vecout ; } > I then try to use - R CMD SHLIB addone.cpp > that didnt work. the error said there was no such file - "Rcpp.h" . > Then i came across Dirk Eddelbeutel's beamer presentation and followed the > suggestion to copy Rcpp.h to /usr/loca/include and libRcpp.so to > /usr/local/lib > Then i tried R CMD SHLIB addone.cpp again but got many errors. Here is a > small selection: > > /usr/local/include/Rcpp.h:34:32: error: RcppDatetimeVector.h: No such file > or directory > /usr/local/include/Rcpp.h:35:23: error: RcppFrame.h: No such file or > directory > /usr/local/include/Rcpp.h:36:26: error: RcppFunction.h: No such file or > directory > /usr/local/include/Rcpp.h:37:22: error: RcppList.h: No such file or > directory > > could someone help? im afraid im new both to linux and Rcpp! > > best, > abhisek -- 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 ______________________________________________ [hidden email] 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. |
|
Many thanks Romain! It worked. And thanks for pointing out the errors.
best abhisek On Thu, Mar 25, 2010 at 12:45 PM, Romain Francois <[hidden email]>wrote: > Le 25/03/10 13:16, Abhisek a écrit : > > >> Hi, Im not sure if this is the right place to post this. >> > > It is not. The Rcpp-devel mailing list is the right place: > https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel > > > I am using Xubuntu >> Karmic Koala and am trying to use the Rcpp package. I am testing it using >> a >> simple code that takes in a vector and adds 1 to each element: >> >> #include<Rcpp.h> >> >> // This file takes in a vector and adds one to each entry >> RcppExport SEXP addone(SEXP vec){ >> >> // create a local copy of vec >> Rcpp::NumericVector orig(vec); >> >> // create an output vector >> Rcpp::NumericVector vecout(orig.size()); >> >> for(i=0;i<orig.size();i++) { >> vecout[i] = orig[i]+1; >> } >> >> Rcpp::Pairlist >> res(Rcpp::Named("result",vecout),Rcpp::Named("original",orig)); >> >> return res; >> } >> > > You need some flags set up : > > export PKG_LIBS=`Rscript -e "Rcpp:::LdFlags()"` > export PKG_CXXFLAGS=`Rscript -e "Rcpp:::CxxFlags()"` > > R CMD SHLIB addone.cpp > > also, your code is not correct since the i variable is not declared, so I > get this when I try to compile it: > > addone.cpp: In function SEXPREC* addone(SEXPREC*): > addone.cpp:12: error: i was not declared in this scope > make: *** [addone.o] Error 1 > > > The inline package can help you with this when prototyping your code, check > the cfunction in the inline package, specifically its arguments "verbose" > and "Rcpp". > > > > > > Personally I would code this using stl algorithms rather than raw looping: > > #include <Rcpp.h> > > template <typename T> > inline T add_one( T x){ > return x + 1 ; > > } > > // This file takes in a vector and adds one to each entry > RcppExport SEXP addone(SEXP vec){ > > // original object > Rcpp::NumericVector orig(vec); > > // output vector > > Rcpp::NumericVector vecout(orig.size()); > > std::transform( > orig.begin(), orig.end(), > vecout.begin(), > add_one<double> ) ; > > return vecout ; > } > > > or maybe you don't even have to write the tedious add_one template and you > can do it like this: > > > #include <Rcpp.h> > > // This file takes in a vector and adds one to each entry > RcppExport SEXP addone(SEXP vec){ > > // original object > Rcpp::NumericVector orig(vec); > > // output vector > > Rcpp::NumericVector vecout(orig.size()); > > std::transform( > orig.begin(), orig.end(), > vecout.begin(), > std::bind2nd( std::plus<double>(), 1.0 ) > ) ; > > return vecout ; > > } > > > I then try to use - R CMD SHLIB addone.cpp >> that didnt work. the error said there was no such file - "Rcpp.h" . >> Then i came across Dirk Eddelbeutel's beamer presentation and followed the >> suggestion to copy Rcpp.h to /usr/loca/include and libRcpp.so to >> /usr/local/lib >> Then i tried R CMD SHLIB addone.cpp again but got many errors. Here is a >> small selection: >> >> /usr/local/include/Rcpp.h:34:32: error: RcppDatetimeVector.h: No such file >> or directory >> /usr/local/include/Rcpp.h:35:23: error: RcppFrame.h: No such file or >> directory >> /usr/local/include/Rcpp.h:36:26: error: RcppFunction.h: No such file or >> directory >> /usr/local/include/Rcpp.h:37:22: error: RcppList.h: No such file or >> directory >> >> could someone help? im afraid im new both to linux and Rcpp! >> >> best, >> abhisek >> > > > -- > 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 > > ______________________________________________ [hidden email] 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. |
| Powered by Nabble | See how NAML generates this page |
