현재 Rcpp 사용 방법을 알아 내려고 this 웹 사이트에 나열된 예제를 진행했습니다. 나는 행렬을 포함하는 예제까지 모든 예제를 다룰 수있었습니다. 예를 들어, 다음 코드는 문제를 일으켰습니다. INTEGER()에만 적용 할 수 있습니다 : 나는 다음 작업을 수행 할 때이 어디에 나는 확실히 오류 메시지가Rcpp 기본 숫자 예제 오류
> source('rcpp_test.r')
Loading required package: Rcpp
> x <- matrix(c(1,2,3,4,5,6,7,8,9), byrow=T, nrow=3)
> test(x)
Error in rowSumsC(x) :
INTEGER() can only be applied to a 'integer', not a 'NULL'
하지 얻을 이제
# rcpp_test.r
require(Rcpp)
test<-function(x){
cppFunction('NumericVector rowSumsC(NumericMatrix x) {
int nrow = x.nrow(), ncol = x.ncol();
NumericVector out(nrow);
for (int i = 0; i < nrow; i++) {
double total = 0;
for (int j = 0; j < ncol; j++) {
total += x(i, j);
}
out[i] = total;
}
return out;
}')
return(rowSumsC(x))
}
아래에 나열된 .R 파일에 코드를 분리 한 '정수'로 변환하려면 NumericMatrix 객체를 가져 오는 것이 매우 시원 할 것이므로 'NULL'오류가 발생하지 않는 것은 슬픈 일입니다. 어떤 도움이나 조언이
을 감상 할 수있다편집 :
#include <Rcpp.h>
using namespace Rcpp;
// [[Rcpp::export]]
NumericVector rowSumsC(NumericMatrix x) {
int nrow = x.nrow(), ncol = x.ncol();
NumericVector out(nrow);
for (int i = 0; i < nrow; i++) {
double total = 0;
for (int j = 0; j < ncol; j++) {
total += x(i, j);
}
out[i] = total;
}
return out;
}
다음 사물이 작동 : I 파일 /tmp/rowSumC.cpp
에 코드를 배치하면 내가 sessionInfo()
> sessionInfo()
R version 3.1.1 (2014-07-10)
Platform: x86_64-w64-mingw32/x64 (64-bit)
locale:
[1] LC_COLLATE=English_United States.1252 LC_CTYPE=English_United States.1252
[3] LC_MONETARY=English_United States.1252 LC_NUMERIC=C
[5] LC_TIME=English_United States.1252
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] Rcpp_0.11.2
loaded via a namespace (and not attached):
[1] tools_3.1.1
이 코드는 나를 위해 실행됩니다.'sessionInfo()'를 게시 할 수 있습니까? – nrussell
나는 어떤 과실도 얻지 않는다. 그것을 소싱하지 않고 달리기를 시도 했습니까? 전역 환경에서 함수를 정의한 직후에 바로? –
그래, 난 그걸 시도하고 같은 오류가 발생합니다. RStudio에 문제가 있거나 Rcpp 버전을 너무 많이 사용하고 있습니다. 방금 2 일 전에 모든 것을 다운로드했습니다 (예 : R Studio, Rcpp). – Ockham