I just started learning Rcpp, and I'd like to convert the following function into Rcpp:
foo <- function(N) {
out <- c()
for (i in (seq_len(N-1)+1)){
out[i-1] <- i + 1
}
return(out)
}
This is my attempt so far, but it's not quite outputting what I want.
cppFunction("NumericVector bar(int N) {
NumericVector out (N);
for(int i = 1; i < N + 1; i++) {
out(i - 1) = i + 1;
}
return(out);
}")
Indices in C run from 0 on.
Try
library(Rcpp)
cppFunction("NumericVector bar(int N) {
NumericVector out (N-1);
for(int i = 0; i < N-1 ; i++) {
out(i) = i + 3;
}
return(out);
}")
foo(4)
#> [1] 3 4 5
bar(4)
#> [1] 3 4 5
foo
as defined is a bit counter-intuitive because it outputs one element less than its argument N