You need Rcpp 0.7.11 (where create was introduced) It has been pushed to cran, but somehow does not appear yet. If you are in a hurry, you can get it from r-forge:
$ svn checkout svn://svn.r-forge.r-project.org/svnroot/rcpp/pkg/Rcpp $ R CMD INSTALL Rcpp Le 01/04/10 09:42, Abhisek a écrit : > 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] <mailto:[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] <mailto:[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]> > <mailto:[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]> > <mailto:[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> > <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]><mailto:[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? > |> |> -- 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
