Thank you!

I will send my reply to Rcpp-devel from now on Re: my question -. Since I
thought cppFunction() allows vectorized operations, I thought any R
functions I call from R would also allow it. pbeta() within R can be
specified as  pbeta(runif(10), 1, 2) where the first argument is a vector.
the function sequence() basically takes an integer, and produce a vector of
consecutive integers starting from 1 to the provided value.


Best,
Xiao

On Tue, May 14, 2013 at 6:39 AM, Dirk Eddelbuettel <edd@debian.org> wrote:

>
> On 13 May 2013 at 21:42, Xiao He wrote:
> | Dear R-Developers,
> |
> | I just started learning how to use Rcpp. Earlier while using it, I
> | encountered an error as shown below:
> |
> | file74d8254b96d4.cpp: In function ‘Rcpp::NumericVector
> | foo(Rcpp::NumericVector, Rcpp::NumericVector, Rcpp::NumericVector,
> | Rcpp::Function, Rcpp::Function)’:
> | file74d8254b96d4.cpp:10: error: invalid operands of types ‘SEXPREC*’ and
> | ‘R_len_t’ to binary ‘operator/’
> | make: *** [file74d8254b96d4.o] Error 1
> |
> | Below is a mock function that can reproduce this error. I wonder if
> anyone
> | can tell me what is the problem here. Thank you in advance!!
> |
> | foo<-cppFunction('
> |    NumericVector foo(NumericVector q, NumericVector shape1, NumericVector
> | shape2, Function pbeta, Function sequence){
> |          NumericVector output(q.size());
> |          output=pbeta(sequence(q.size())/q.size(), shape1, shape2);
> |         return output;
> |  }
> |  ')
>
> Really briefly:
>
>  1)  Wrong mailing list. Rcpp question are to be sent to rcpp-devel
>
>  2)  Possible error in your function setup.  Why do you supply pbeta?
>  What is sequence?
>
>  3)  Error in how you call pbeta.  The first argument is a vector, the
> other
>      two are scalars.
>
>  4)  Compiler error is pretty clear for once: it does not understand the
>      division, and you only have one so look there.
>
>
> Here is a minimal working example:
>
> library(Rcpp)
> foo<-cppFunction('NumericVector foo(NumericVector q, double shape1, double
> shape2){
>   return pbeta(q, shape1, shape2);
>
>                                                            }')
>
> for which I get
>
> R> source('/tmp/foo.R')
> R> foo(seq(0.1, 0.5, by=0.1), 2, 3)
> [1] 0.0523 0.1808 0.3483 0.5248 0.6875
>
> Dirk
>
> --
> Dirk Eddelbuettel | edd@debian.org | http://dirk.eddelbuettel.com
>

	[[alternative HTML version deleted]]

