2017-01-31 9 views
0

roxygen2와 Rcpp를 사용하여 내게 R 함수를 만들 필요가 없습니다 (또는 어쩌면 내가 할 수 있습니까?). 내 보낸 C++ 함수에 대해 - 어떤 방법으로도 사용할 수 있습니까? 그들을 만들려면 Rcpp::export이 아니라고 말해? .Call을 직접 사용해 주셔서 감사합니다.Rcpp :: export - R 함수가 아닌 C++ 인터페이스 만 내 보냅니다.

내가 Writing R Extensions을 통해 가고, Rcpp AttributesWriting a package that uses Rcpp 네트, SO (같은 here)하지만 난 도움이 아무것도 찾지 못했습니다에 roxygen2 및 다중 스레드의 문서.

답변

2

질문을 올바르게 이해했다면 "스텁 함수를 만들지 않으려면"[[Rcpp::export]] 태그를 입력하지 마십시오. "라고 간단하게 생각하면됩니다.

또한 roxygen2은 설명서의 내용과 compileAttributes() 함수가 내보내는 내용을 혼동합니다.

명백하게 말하면, 후자 만 R과 C++ 사이의 인터페이스를 만드는 것과 관련이 있습니다. 그리고 마진에, 당신은 그들이 무료 예외 처리 및 그들이 당신에게주는 RNG 설정을 원한다. 하지만, 만약 당신이하지 않고도 할 수 있다면, 당신은 할 수 있고, 입니다.

+0

감사합니다.하지만 항상 [[[Rcpp :: export]]'이 필요하다고 생각하여 Rcpp가 R 객체를 C++ 객체로 올바르게 변환했는지 ...? 'NumericVector foo (NumericVectorr x) {return x + 1; }'.Call'을 사용하지 않고 그것을 사용하고 있습니까? – Tim

+0

몇 가지 문제가 혼동스러워 보입니다. 번역은'[[Rcpp :: export]]'에 의해 간지러워 질 때'compileAttributes()'에 의해 행해진 변환에 의해서가 아니라, 패키지의 C++ 코드에 의해 수행됩니다. Rcpp 속성은 대체로 많은 (오히려 도움이되는 !!) 글루 코드를 추가하여 [inline] 패키지 (https://cran.r-project.org/package=inline)가 이전에 확장 된 것을 확장합니다. 당신은 이들 중 어느 하나도 사용하지 않아도되지만, 다른 사람들을 위해하는 것처럼, 이러한 제공이 당신에게 강요 할 수 있다고 생각합니다. 어쩌면 당신은 당신의 질문을 분명히 할 수 있습니다. –

+0

그리고/또는 다른 패키지에서는 _look_을 사용하십시오. 지금 CRAN에는 900 개가 넘고 잘 지내고 있습니다. 많은 사람들이 C++에서 내보내기 태그없이 내부 도우미 함수를 사용합니다. 감사합니다. –