R error.expected unqualified-id before 'while' 中的内联 c++ 代码
Inlined c++ code in R error.expected unqualified-id before 'while'
我在 运行 以下代码旨在生成快速排序函数时收到此错误。这似乎是我第一次打电话导致问题。有人可以告诉我我做错了什么吗?
library(Rcpp)
library(inline)
body_sortCpp <- '
NumericVector arr(x);
int n = arr.size();
double tmp;
double left = arr[0];
double right = arr[n-1];
int pivot = arr[n/2];
double i = left, j = right;
while (i <= j){
while (arr[i] <= pivot)
i++;
while (arr[j] > pivot)
j--;
if (i <= j) {
tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
i++;
j--;
}
}
if (left < j){
sortCpp(arr, left, j);
}
if (i < right){
sortCpp(arr, i, right);
}
return wrap( arr );
'
sortCpp <- cxxfunction( signature( x = "numeric"),
body = body_sortCpp,
include = body_sortCpp,
plugin = "Rcpp")
您对 cxxfunction()
的使用可能有误:
sortCpp <- cxxfunction( signature( x = "numeric"),
body = body_sortCpp,
include = body_sortCpp,
plugin = "Rcpp")
您提供代码 两次。删除 include=
就可以了。
还要考虑一个适当的缩进编辑器,并研究 Rcpp Attributes 小插图作为 cxxfunction()
.
的更好替代品
我在 运行 以下代码旨在生成快速排序函数时收到此错误。这似乎是我第一次打电话导致问题。有人可以告诉我我做错了什么吗?
library(Rcpp)
library(inline)
body_sortCpp <- '
NumericVector arr(x);
int n = arr.size();
double tmp;
double left = arr[0];
double right = arr[n-1];
int pivot = arr[n/2];
double i = left, j = right;
while (i <= j){
while (arr[i] <= pivot)
i++;
while (arr[j] > pivot)
j--;
if (i <= j) {
tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
i++;
j--;
}
}
if (left < j){
sortCpp(arr, left, j);
}
if (i < right){
sortCpp(arr, i, right);
}
return wrap( arr );
'
sortCpp <- cxxfunction( signature( x = "numeric"),
body = body_sortCpp,
include = body_sortCpp,
plugin = "Rcpp")
您对 cxxfunction()
的使用可能有误:
sortCpp <- cxxfunction( signature( x = "numeric"),
body = body_sortCpp,
include = body_sortCpp,
plugin = "Rcpp")
您提供代码 两次。删除 include=
就可以了。
还要考虑一个适当的缩进编辑器,并研究 Rcpp Attributes 小插图作为 cxxfunction()
.