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 <e...@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 | e...@debian.org | http://dirk.eddelbuettel.com > [[alternative HTML version deleted]]
______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel