2016-04-05 7 views
1

最初に私はこれがおそらくRcpp-Devel関数であることを知っていますが、FirefoxやChromeを使用して購読しようとすると、私の仕事用イーサネットで接続が安全でないというエラーが表示されます今ここで尋ねなければならない。Rcppコンパイルされた属性

だから私はダークの本を購入して、それはすばらしく書かれています。

私は私の名前空間がuseDynLib(mySage)、と私は正常に実行することができcompileAttributesと(外のディレクトリにある)R CMDビルドを持って、 https://www.mail-archive.com/rcpp-devel%40lists.r-forge.r-project.org/msg08059.html

Sage<-testArm(set,labels,contrast,geneSets,var.equal=FALSE) 
Calculating comparisons...Error in .Call("sigmaCalc", PACKAGE = "mySage") :  
"sigmaCalc" not available for .Call() for package "mySage" 

なお、ここで同様のエラーを取得していますし、インストールパッケージは正常に終了しました

は、私はここに

がここ

//[[Rcpp::depends(RcppArmadillo)]] 
#include <RcppArmadillo.h> 
#include <algorithm> 
#include <vector> 
#include <Rcpp.h> 
#include <math.h> 
#include <R.h> 
using namespace arma; 
using namespace Rcpp; 
//'calculates the sd and mindof in order , names are assigned in R, as of  now, there is no NA error checking. not very robust 
//' @param SDs standard deviations from geneResults returned by  makeComparison 
//' @param DOFs degrees of freedom from geneResults returned by makeComparison 
//' @param geneSets a set of genes for enrichment testing 
//' @export 
//' @return a List with SumSigma and MinDof 
//[[Rcpp::export]] 
List sigmaCalc(SEXP SDs, SEXP DOFs, SEXP geneSets) { 
Rcpp::NumericVector SD(SDs); 
Rcpp::NumericVector DOF(DOFs); 
Rcpp::List geneSet(geneSets); 
more code .... 

コメントが作成されます私のCPPコードのいずれかとRの名前空間に輸出され、エラーが発生し、RcppExport.R関数の1つを呼び出すしようとすると、適切 はここにここにRcppExport.cpp

ですRcppExports.R

# This file was generated by Rcpp::compileAttributes 
# Generator token: 10BE3573-1514-4C36-9D1C-5A225CD40393 

#'calculates the sd and mindof in order , names are assigned in R, as of now, there is no NA error checking. not very robust 
#' @param SDs standard deviations from geneResults returned by makeComparison 
#' @param DOFs degrees of freedom from geneResults returned by makeComparison 
#' @param geneSets a set of genes for enrichment testing 
#' @export 
#' @return a List with SumSigma and MinDof 
sigmaCalc <- function(SDs, DOFs, geneSets) { 
.Call('mySage_sigmaCalc', PACKAGE = 'mySage', SDs, DOFs, geneSets) 
} 

です

// This file was generated by Rcpp::compileAttributes 
// Generator token: 10BE3573-1514-4C36-9D1C-5A225CD40393 

#include <RcppArmadillo.h> 
#include <Rcpp.h> 

using namespace Rcpp; 

// sigmaCalc 
List sigmaCalc(SEXP SDs, SEXP DOFs, SEXP geneSets); 
RcppExport SEXP mySage_sigmaCalc(SEXP SDsSEXP, SEXP DOFsSEXP, SEXP geneSetsSEXP) { 
BEGIN_RCPP 
Rcpp::RObject __result; 
Rcpp::RNGScope __rngScope; 
Rcpp::traits::input_parameter<SEXP>::type SDs(SDsSEXP); 
Rcpp::traits::input_parameter<SEXP>::type DOFs(DOFsSEXP); 
Rcpp::traits::input_parameter<SEXP>::type geneSets(geneSetsSEXP); 
__result = Rcpp::wrap(sigmaCalc(SDs, DOFs, geneSets)); 
return __result; 
END_RCPP 
} 

私はいくつかのことについてよく分かりませんが、ヘッダーファイルは必要ですか?テキストはrcpp_hello_world.hが必要であることを示唆していますが、RcppExport.cppを読んだら、cpp関数の宣言がExport.cppに含まれているので、宣言的なヘッダファイルを書く必要があるかどうかはわかりません。 networkBMA、wordcloud、pcaMethodsはすべてRcppパッケージであり、ヘッダーは含まれていないため、APIとのインターフェイスにのみ必要なヘッダーがありますか?

このエラーが発生する可能性のある他のものは、私の関数パラメータがRcpp:NumericVectors .../NumericMatrixではなく、Rcpp型を入力するためにcppコードsigmaCalcを記述する必要があります。 cpp関数はSEXPキャストを処理しますか?

ありがとうございました。

P.S.ここで私はエラーが私はCPPのつくへの入力として入力SEXPだときの包装、RcppExports、RにC++から行くためにsourceCppをprotoypingとき、これが唯一必要なことであるhtinkのsrc/

## Use the R_HOME indirection to support installations of multiple R version 
PKG_LIBS = `$(R_HOME)/bin/Rscript -e "Rcpp:::LdFlags()"` $(LAPACK_LIBS) $(BLAS_LIBS) $(FLIBS) 
PKG_CXXFLAGS=`$(R_HOME)/bin/Rscript -e "Rcpp:::CxxFlags()"` 

の私Makevarsです.cppは2つのシステム間のメディエータです。

答えて

2

投稿はかなり長く、構造を見るのは難しいです。私はあなたがRcppExamples のような例パッケージを使用して最初からやり直すと、どちらか一方

    • のコール Rcpp.package.skeleton()を行うと、そのパッケージを勉強、またはあなたのためのパッケージを作成するための
    • 使用RStudio、または
    • お勧めします

      これらから始め、再構築してください。その後、ゆっくりと関数を追加し、compileAttributes()を実行し、再構築/再インストールしてください。

  • +0

    となります。私は疎遠な質問のためにダウンボトムを望んでいませんでした。すぐに更新されます。tyvm – arcolombo

    +0

    は、C++コードの外部にインポートしない場合、ヘッダファイルが必要ですか? – arcolombo

    関連する問題