[Rd] invalid operands of types ‘SEXPREC*’ an d ‘R_len_t’ to binary ‘operator/’ wit h Rcpp.
Dirk Eddelbuettel
edd at debian.org
Tue May 14 15:39:26 CEST 2013
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
More information about the R-devel
mailing list