Xiao He
2013-May-14 04:42 UTC
[Rd] invalid operands of types ‘SEXPREC*’ and ‘R_len_t’ to binary ‘operator/’ with Rcpp.
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; } ') Best, Xiao [[alternative HTML version deleted]]
Romain Francois
2013-May-14 13:37 UTC
[Rd] invalid operands of types ‘SEXPREC*’ and ‘R_len_t’ to binary ‘operator/’ with Rcpp.
Please use the appropriate mailing list (Rcpp-devel) for Rcpp questions. Romain Le 14 mai 2013 ? 06:42, Xiao He <praguewatermelon at gmail.com> a ?crit :> 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; > } > ') > > > Best, > Xiao > > [[alternative HTML version deleted]] > > ______________________________________________ > R-devel at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel
Dirk Eddelbuettel
2013-May-14 13:39 UTC
[Rd] invalid operands of types ‘SEXPREC*’ an d ‘R_len_t’ to binary ‘operator/’ wit h Rcpp.
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 at debian.org | http://dirk.eddelbuettel.com