2016-07-20 14 views
0

これらの開発方法をRで学習するパッケージを作成しましたが、解決できないエラーが発生しました。私はこのエラーが珍しくなかったのを見ましたが、解決策を見つけることができませんでした。未定義の関数/関数が見つかりません

これは私のパッケージのコード(非常に簡単)です:

absconc<-function(x,a,b,...) 
{ 
    a<-as.numeric(a) 
    b<-as.numeric(b) 

absconcCalc<- function(x,a,b,...) 
{ 
    conc<- (x*a)+b 
} 
conc<-absconcCalc(x,a,b,...) 

print.absconc<- function(x,a,b,...) 
{ 
cat("Slope:") 
cat(a,"\n") 
cat("Intercept:") 
cat(b,"\n") 
cat("Concentration:") 
cat(conc) 
} 
print.absconc(x,a,b) 
} 

私はpackage.skeletonを使用してパッケージを作成し、それが魅力のように働いた、R CMD build absconcを使用してパッケージのも、建物が働いていました。

問題は、私が与えたパッケージを使用しようとしたときでしたError: could not find function "absconc"。 私はそれがNAMESPACEと輸出の問題であったので、export(absconc)を使って関数をエクスポートしようとしました。私はそれを構築しようとしたとき、私はエラーがあると言った:

Error in namespaceExport(ns, exports) : 
undefined exports: absconc, absconcCalc, print.absconc 

私は今、私の機能が認識されない理由を理解するために頭を傷つけています。 これは私の最初のパッケージであるので、私はいくつかの助けに感謝します。

編集:ここでは、私のファイルは、あなたが手で名前空間を編集しないでください https://github.com/Frisacher/absconc

+0

'.R 'で終わるファイルと' R/absconc.R'などのパッケージのディレクトリ 'R /'に関数を置きましたか? –

+0

'package.skeleton()'または 'devtool :: create()'を使ってパッケージを自動生成すると、 'absconc.R'が' R/'ディレクトリに作成されます。それはあなたが話していることですか? –

+0

他の人があなたの問題をより簡単に再現できるように、パッケージでgithubリポジトリを作成してみませんか?上のコードスニペットの '{}'は単一の関数(absconc)しか定義されていないことを意味します。あなたのソースコードはこのようなものですか? –

答えて

0

(ビット、厄介申し訳ありません)です。 Rファイルの先頭に#' @export行を挿入し、コンソールにdevtools::document()を実行します。これはあなたのために必要なことを行います。

今度はdevtools::load_all()を実行して機能を実行できます。

より明示的

1)ルートディレクトリの下に「R」という名前のフォルダを作成し、マーティン・モーガンはコメントで示唆されているように、あなたの関数を含むRスクリプトを作成します。

2)は、それをエクスポートするために、あなたのRスクリプトにroxygenコメントを追加します。

#' @export 

absconc<-function(x,a,b,...) 
{ 
    a<-as.numeric(a) 
    b<-as.numeric(b) 
    ... 
} 

3)は、コンソールでデベロッパーツール::文書を()を実行します。

> devtools::document() 
Updating absconc documentation 
Loading absconc 
Writing NAMESPACE 

4)パッケージをdevtools :: load_all()で読み込みます。

> devtools::load_all() 
Loading absconc 

5)関数を実行します。

> absconc(1,2,3) 
Slope:2 
Intercept:3 
Concentration:5 
+0

理想的には、HパッケージのHadley Wickhamの美しい本を読むことができます。これらの2つのセクションは、特に関連しています: http://r-pkgs.had.co.nz/namespace.html http://r-pkgs.had.co.nz/man.html#man-functions –

+0

私はこれらの文書を見ましたが、一度にすべてを取得して適用するのは難しいです:) あなたのメソッドを使ってみましたが、生成されたNAMESPACEは空白です( "generated by ..."とは別です)。私は残りの部分を実行しようとしましたが、関数はまだ見つかりません。だから、関数は実際にエクスポートされていないと思います。 –

+0

私の編集した答えを見てください。あなたが各セクションの「ワークフロー」を読んだら、あなたはしっかりしているはずです! –

関連する問題