An embedded and charset-unspecified text was scrubbed... Name: not available URL: <https://stat.ethz.ch/pipermail/r-devel/attachments/20130513/e3c91261/attachment.pl>
invalid operands of types ‘SEXPREC*’ and ‘R_len_t’ to binary ‘operator/’ with Rcpp.
5 messages · Xiao He, Romain Francois, Dirk Eddelbuettel
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
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
An embedded and charset-unspecified text was scrubbed... Name: not available URL: <https://stat.ethz.ch/pipermail/r-devel/attachments/20130514/b68a2e92/attachment.pl>
On 14 May 2013 at 06:47, Xiao He wrote:
| 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. And of course so does the pbeta() we offer in Rcpp, and so does the example I posted below. | the function sequence() | basically takes an integer, and produce a vector of consecutive integers | starting from 1 to the provided value.? Ie the same as typing 1:N ? Dirk | | Best, | Xiao |
| On Tue, May 14, 2013 at 6:39 AM, Dirk Eddelbuettel <edd at 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 at debian.org | http://dirk.eddelbuettel.com
|
|
Dirk Eddelbuettel | edd at debian.org | http://dirk.eddelbuettel.com