Hi Romain, I tried the commands you gave and I get the following error:
RcppArmadilloEg.cpp: In function ‘SEXPREC* fastLm(SEXPREC*, SEXPREC*)’: RcppArmadilloEg.cpp:19: error: ‘create’ is not a member of ‘Rcpp::List’ make: *** [RcppArmadilloEg.o] Error 1 is there some kind of update I need to make? almost there! abhisek On Tue, Mar 30, 2010 at 3:12 PM, Romain Francois <[email protected]>wrote: > Le 30/03/10 15:36, Douglas Bates a écrit : > > On Tue, Mar 30, 2010 at 1:15 AM, Romain Francois >> <[email protected]> wrote: >> >>> Hi, >>> >> >> If you want to compile the code that is here >>> http://dirk.eddelbuettel.com/code/rcpp.armadillo.html directly from R >>> CMD SHLIB, you can do this: >>> >> >> rom...@naxos /tmp $ export PKG_CXXFLAGS=`Rscript -e >>> "RcppArmadillo:::CxxFlags()"` >>> rom...@naxos /tmp $ export PKG_LIBS=`Rscript -e >>> "RcppArmadillo:::LdFlags()"` >>> rom...@naxos /tmp $ R CMD SHLIB armaex.cpp >>> >> >> The way that RcppArmadillo:::LdFlags() is currently defined there is a >> possibility of getting different Lapack and BLAS libraries when using >> R or calls to RcppArmadillo. R uses the libraries defined by the >> macros LAPACK_LIBS, BLAS_LIBS and FLIBS in the file >> >> file.path(R.home("etc"), "Makeconf") # evaluate this in R >> >> It is not certain that those will be the same as the libraries used by >> Armadillo. If they are not shared objects you run the risk of getting >> two copies of Lapack, etc. and possibly different BLAS, leading to >> different performance characteristics and perhaps different results. >> > > Hmmm. Interesting. I did not think of that problem. > > On my machine, I have : > > Rscript -e "RcppArmadillo:::LdFlags()" > /Library/Frameworks/R.framework/Resources/library/Rcpp/lib/x86_64/libRcpp.a > -L/usr/lib -larmadillo > > so linking against Rcpp "user" library and armadillo... but when I manually > set PKG_LIBS to just Rcpp user library, it still works, so we actually do > not need to link against armadillo library. armadillo itself does not > __need__ to get compiled into a library because it is all templates. > > > I would however strongly recommend you to have this in a package. >>> >>> Romain >>> >>> Le 26/03/10 19:00, Abhisek a écrit : >>> >>>> Hi Dirk, >>>> >>>> I was referring to this page: >>>> http://dirk.eddelbuettel.com/code/rcpp.armadillo.html >>>> i was trying to run the code there. >>>> >>>> here is my understanding so far (im new to linux and c++ so i apologize >>>> for seeming rather slow!): >>>> 1. The Rcpp package helps C++ and R recognize each others stuff (like >>>> variables). >>>> >>>> 2. The RcppArmadillo package extends this functionality to objects used >>>> in armadillo (such as matrices and vectors e.g. colvec). >>>> >>>> 3. In FastLM, armadillo is being included but not RcppArmadillo. but >>>> that is ok because there is a loop in there which converts an vector as >>>> defined in armadillo to one which Rcpp recognizes. And it is this >>>> vector which which gets passed back to R through the Rcpp interface. >>>> also, it uses cfunction which is different from what im doing here as i >>>> think you mentioned earlier (it worked by the way!) >>>> >>>> what i tried to do was as follows: >>>> a) to run the code as in the link above and include Rcpp and >>>> RcppArmadillo and I was getting the errors as described in my initial >>>> post. >>>> b) then i tried the same code but only including Rcpp and armadillo. >>>> >>>> if my reasoning above is correct, part (b) should not run as Rcpp would >>>> not recognize stuff like arma::colvec. but, i get the exact same error >>>> as above! >>>> >>>> so that suggests, that while compiling the code, the compiler is not >>>> even getting to the point in procedure b when it should encounters an >>>> type it doesnt recognize. which means that somehow, armadillo is giving >>>> problems. but that is as far as i can understand. either that or my >>>> understanding is way off. >>>> >>>> appreciate your patience and help! >>>> abhisek >>>> >>>> >>>> >>>> On Fri, Mar 26, 2010 at 4:20 PM, Dirk Eddelbuettel<[email protected] >>>> <mailto:[email protected]>> wrote: >>>> >>>> >>>> On 26 March 2010 at 15:32, Abhisek wrote: >>>> | Hi Dirk, >>>> | >>>> | Just so that I understand. I copied the code in the RcppArmadillo >>>> section >>>> | on your website and pasted and saved it. >>>> >>>> What code? What page? >>>> >>>> | Are you saying I should change >>>> | #include<RcppArmadillo> to #include<Rcpp> and >>>> #include<armadillo> ? >>>> >>>> No that is not what I said. I said >>>> >>>> You can't just look at FastLM() and think your code will run >>>> like it. >>>> RcppArmadillo __does not export its classes__. It is an >>>> implementation >>>> reference -- it gives you guidance as to how to implement C++ >>>> packages of >>>> your own against other libraries. >>>> >>>> If you "just" want to use Armadillo and have Rcpp help you, look >>>> at the >>>> installed example 'FastLM' in the Rcpp package. In other words >>>> ignore >>>> RcppArmadillo for now. >>>> >>>> So look at /usr/local/lib/Rcpp/examples/FastLM/ and the files there. >>>> Run >>>> >>>> fastLMviaArmadillo.r >>>> >>>> and look at it. That should work. >>>> >>>> You can also look at the _entire RcppArmadillo package_ and see how >>>> the >>>> pieces fit together, including src/Makevars. >>>> >>>> But don't just take semi-random shortcuts and expect that to work. >>>> If we >>>> could make it any simpler, we would. There is a reason >>>> RcppArmadilli is >>>> package and not just a file. >>>> >>>> Dirk >>>> >>>> | best, >>>> | abhisek >>>> | >>>> | On Fri, Mar 26, 2010 at 1:40 PM, Dirk Eddelbuettel<[email protected] >>>> <mailto:[email protected]>> wrote: >>>> | >>>> |> >>>> |> Hi Abhisek, >>>> |> >>>> |> On 26 March 2010 at 12:28, Abhisek wrote: >>>> |> | I downloaded the stuff just last friday so it should be the >>>> latest >>>> |> version >>>> |> | of Rcpp as well as Armadillo. I used install.packages() for >>>> Rcpp and >>>> |> | RcppArmadillo. Armadillo is 0.9.4. Im using xubuntu karmic >>>> koala. >>>> |> >>>> |> Ok, that is all good. And if RcppArmadillo installed you have >>>> proper >>>> |> libraries, Armadillo included. >>>> |> >>>> |> I think part of your problem is a misunderstanding of an issue >>>> we may not >>>> |> have made particularly clear: You can't just look at FastLM() >>>> and think >>>> |> your code will run like it. RcppArmadillo __does not export its >>>> classes__. >>>> |> It is an implementation reference -- it gives you guidance as to >>>> how to >>>> |> implement C++ packages of your own against other libraries. >>>> |> >>>> |> If you "just" want to use Armadillo and have Rcpp help you, look >>>> at the >>>> |> installed example 'FastLM' in the Rcpp package. In other words >>>> ignore >>>> |> RcppArmadillo for now. >>>> |> >>>> |> The example (in 0.7.10) uses an idiom we no longer like and I am >>>> about to >>>> |> change that for an upcoming 0.7.11 release, but it should works >>>> as is and >>>> |> just use inline -- so no messing with makefile etc. >>>> |> >>>> |> Try that and see how it goes and keep us posted. >>>> |> >>>> |> Cheers, Dirk >>>> |> >>>> |> >>>> |> | i also had some problem using Armadillo which I posted on the >>>> Armadillo >>>> |> | discussion board. Conrad got back to me. Here is the >>>> discussion: >>>> |> | https://sourceforge.net/apps/phpbb/arma/viewtopic.php?f=1&t=4 >>>> <https://sourceforge.net/apps/phpbb/arma/viewtopic.php?f=1&t=4> >>>> |> | >>>> |> | so it may be that armadillo is the problem but im really not >>>> sure. >>>> |> | >>>> |> | Many thanks >>>> |> | Abhisek >>>> |> | >>>> |> | On Fri, Mar 26, 2010 at 12:17 PM, Dirk Eddelbuettel >>>> <[email protected]<mailto:[email protected]>> >>>> |> wrote: >>>> |> | >>>> |> |> >>>> |> |> (resending, this time to list I omitted last time, sorry. >>>> --Dirk) >>>> |> |> >>>> |> |> On 26 March 2010 at 11:10, Abhisek wrote: >>>> |> |> | Hi, >>>> |> |> | >>>> |> |> | Ive been trying to make RcppArmadillo work using the >>>> example file >>>> |> |> (fastLM). >>>> |> |> | I copied and pasted the code and saved it as >>>> RcppArmadilloEg.cpp (not >>>> |> to >>>> |> |> use >>>> |> |> | fastLM but to figure out how to work RcppArmadillo). Then >>>> i tried >>>> |> using >>>> |> |> the >>>> |> |> | command R CMD SHLIB RcppArmadilloEg.cpp but an error came >>>> up saying >>>> |> that >>>> |> |> | RcppArmadillo.h not found. >>>> |> |> | >>>> |> |> | So i tried doing a symbolic link from /usr/local/include >>>> to the >>>> |> directory >>>> |> |> | where RcppArmadillo.h and RcppArmadilloDefines.h is >>>> stored. I also >>>> |> did a >>>> |> |> | symbolic link analogously for RcppArmadillo.so. When i >>>> ran R CMD >>>> |> SHLIB >>>> |> |> | again I got the following error: >>>> |> |> | >>>> |> |> | abhi...@shieks:~/Desktop/Personal/Test$ R CMD SHLIB >>>> |> RcppArmadilloEg.cpp >>>> |> |> | g++ -I/usr/share/R/include >>>> |> |> | -I/home/abhisek/R/i486-pc-linux-gnu-library/2.10/Rcpp/lib >>>> -fpic -g >>>> |> -O2 >>>> |> |> -c >>>> |> |> | RcppArmadilloEg.cpp -o RcppArmadilloEg.o >>>> |> |> >>>> |> |> So far so good: one -I for R as usual, one for Rcpp. >>>> |> |> >>>> |> |> | In file included from >>>> |> |> | >>>> |> >>>> >>>> /home/abhisek/R/i486-pc-linux-gnu-library/2.10/Rcpp/lib/RcppCommon.h:215, >>>> |> |> | from >>>> |> |> | >>>> /home/abhisek/R/i486-pc-linux-gnu-library/2.10/Rcpp/lib/Rcpp.h:28, >>>> |> |> | from RcppArmadilloEg.cpp:1: >>>> |> |> | >>>> |> |> >>>> |> >>>> >>>> /home/abhisek/R/i486-pc-linux-gnu-library/2.10/Rcpp/lib/Rcpp/internal/wrap.h: >>>> |> |> | In function ‘SEXPREC* >>>> |> |> Rcpp::internal::wrap_dispatch_unknown_iterable(const >>>> |> |> | T&, Rcpp::traits::false_type) [with T = >>>> arma::Col<double>]’: >>>> |> |> | >>>> |> |> >>>> |> >>>> >>>> /home/abhisek/R/i486-pc-linux-gnu-library/2.10/Rcpp/lib/Rcpp/internal/wrap.h:491: >>>> |> |> | instantiated from ‘SEXPREC* >>>> |> Rcpp::internal::wrap_dispatch_unknown(const >>>> |> |> T&, >>>> |> |> | Rcpp::traits::false_type) [with T = arma::Col<double>]’ >>>> |> |> | >>>> |> |> >>>> |> >>>> >>>> /home/abhisek/R/i486-pc-linux-gnu-library/2.10/Rcpp/lib/Rcpp/internal/wrap.h:509: >>>> |> |> | instantiated from ‘SEXPREC* >>>> |> |> | Rcpp::internal::wrap_dispatch_unknown_importable(const T&, >>>> |> |> | Rcpp::traits::false_type) [with T = arma::Col<double>]’ >>>> |> |> | >>>> |> |> >>>> |> >>>> >>>> /home/abhisek/R/i486-pc-linux-gnu-library/2.10/Rcpp/lib/Rcpp/internal/wrap.h:526: >>>> |> |> | instantiated from ‘SEXPREC* >>>> Rcpp::internal::wrap_dispatch(const T&, >>>> |> |> | Rcpp::traits::wrap_type_unknown_tag) [with T = >>>> arma::Col<double>]’ >>>> |> |> | >>>> |> |> >>>> |> >>>> >>>> /home/abhisek/R/i486-pc-linux-gnu-library/2.10/Rcpp/lib/Rcpp/internal/wrap.h:541: >>>> |> |> | instantiated from ‘SEXPREC* Rcpp::wrap(const T&) [with T = >>>> |> |> | arma::Col<double>]’ >>>> |> |> | >>>> |> >>>> >>>> /home/abhisek/R/i486-pc-linux-gnu-library/2.10/Rcpp/lib/Rcpp/Named.h:54: >>>> |> |> | instantiated from ‘Rcpp::Named::Named(const std::string&, >>>> const T&) >>>> |> [with >>>> |> |> T >>>> |> |> | = arma::colvec]’ >>>> |> |> | RcppArmadilloEg.cpp:19: instantiated from here >>>> |> |> | >>>> |> |> >>>> |> >>>> >>>> /home/abhisek/R/i486-pc-linux-gnu-library/2.10/Rcpp/lib/Rcpp/internal/wrap.h:394: >>>> |> |> | error: cannot convert ‘const arma::Col<double>’ to >>>> ‘SEXPREC*’ in >>>> |> |> | initialization >>>> |> |> | make: *** [RcppArmadilloEg.o] Error 1 >>>> |> |> | >>>> |> |> | >>>> |> |> | could someone provide some advice? >>>> |> |> >>>> |> |> Which Rcpp version do you have installed? >>>> |> |> >>>> |> |> Which Armadillo version do you have installed? >>>> |> |> >>>> |> |> I have not tried the free-floating direct compile you try >>>> here. Maybe >>>> |> the >>>> |> |> defines for RcppArmadillo that we use are missing here -- >>>> hard to say. >>>> |> |> >>>> |> |> Could you try to create your own little package but copying >>>> the >>>> |> |> RcppArmadillo >>>> |> |> files, changes DESCRIPTION to what you do and changes the >>>> FastLM code >>>> |> in >>>> |> |> C++ >>>> |> |> and R? >>>> |> |> >>>> |> |> 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! >>>> |> |> >>>> |> >>>> |> -- >>>> |> 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! >>>> |> >>>> >>>> -- >>>> 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! >>>> >>>> >>>> >>>> >>>> _______________________________________________ >>>> Rcpp-devel mailing list >>>> [email protected] >>>> https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel >>>> >>> >>> >>> -- >>> 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 >>> >>> _______________________________________________ >>> Rcpp-devel mailing list >>> [email protected] >>> https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel >>> >>> >> > > -- > 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 > >
_______________________________________________ Rcpp-devel mailing list [email protected] https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel
