如何将 seq_len 转换为等效的 Rcpp
How to convert seq_len into Rcpp equivalent
刚开始学习Rcpp,想把下面的函数转换成Rcpp:
foo <- function(N) {
out <- c()
for (i in (seq_len(N-1)+1)){
out[i-1] <- i + 1
}
return(out)
}
到目前为止,这是我的尝试,但它并没有完全输出我想要的。
cppFunction("NumericVector bar(int N) {
NumericVector out (N);
for(int i = 1; i < N + 1; i++) {
out(i - 1) = i + 1;
}
return(out);
}")
C 中的索引 运行 从 0 开始。
尝试
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
定义有点 counter-intuitive 因为它输出的元素比它的参数少一个元素 N
刚开始学习Rcpp,想把下面的函数转换成Rcpp:
foo <- function(N) {
out <- c()
for (i in (seq_len(N-1)+1)){
out[i-1] <- i + 1
}
return(out)
}
到目前为止,这是我的尝试,但它并没有完全输出我想要的。
cppFunction("NumericVector bar(int N) {
NumericVector out (N);
for(int i = 1; i < N + 1; i++) {
out(i - 1) = i + 1;
}
return(out);
}")
C 中的索引 运行 从 0 开始。
尝试
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
定义有点 counter-intuitive 因为它输出的元素比它的参数少一个元素 N