[Rcpp-devel] RcppArmadillo error

Abhisek shieks at gmail.com
Thu Apr 1 09:42:04 CEST 2010


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>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>  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>>  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>>  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
>>>>     <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?
>>>>     |>  |>
>>>>     |>  |>  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
>>>> Rcpp-devel at lists.r-forge.r-project.org
>>>> 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
>>> Rcpp-devel at lists.r-forge.r-project.org
>>> 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
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.r-forge.r-project.org/pipermail/rcpp-devel/attachments/20100401/af4ce7c4/attachment-0001.htm 


More information about the Rcpp-devel mailing list