[Rcpp-devel] RcppArmadillo error

Dirk Eddelbuettel edd at debian.org
Thu Apr 1 16:58:36 CEST 2010


On 1 April 2010 at 09:57, Romain Francois wrote:
| You need Rcpp 0.7.11 (where create was introduced)

(And we mentioned that need for 0.7.11 several times)
 
| 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

I would not recommend that as the code can change and introduce other issue.

Releases are at CRAN, and at my Rcpp page.

Dirk
 
| 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
| > <romain at r-enthusiasts.com <mailto:romain at r-enthusiasts.com>> wrote:
| >
| >     Le 30/03/10 15:36, Douglas Bates a écrit :
| >
| >         On Tue, Mar 30, 2010 at 1:15 AM, Romain Francois
| >         <romain at r-enthusiasts.com <mailto:romain at r-enthusiasts.com>>  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:
| >
| >
| >             romain at naxos /tmp $ export PKG_CXXFLAGS=`Rscript -e
| >             "RcppArmadillo:::CxxFlags()"`
| >             romain at naxos /tmp $ export PKG_LIBS=`Rscript -e
| >             "RcppArmadillo:::LdFlags()"`
| >             romain at 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<edd at debian.org <mailto:edd at debian.org>
| >                 <mailto:edd at debian.org <mailto:edd at debian.org>>>  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<edd at debian.org <mailto:edd at debian.org>
| >                 <mailto:edd at debian.org <mailto:edd at debian.org>>>  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
| >                 <edd at debian.org
| >                 <mailto:edd at debian.org><mailto:edd at debian.org
| >                 <mailto:edd at debian.org>>>
| >                      |>  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:
| >                      |>  |>  |
| >                      |>  |>  | abhisek at 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
| Rcpp-devel at lists.r-forge.r-project.org
| https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel

-- 
  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!


More information about the Rcpp-devel mailing list