2017-11-03 14 views
0

私の質問はこの1つです:Function that returns a function in R しかし、私はRパッケージを作成しようとしています。私はsysdata.rdaに格納されたデータフレームを使用してNInputと呼ばれる以下の関数を持っています。私はapproxfun()関数を使って関数を返したいと思います。このパッケージのユーザーは、日付がapproxfun()で作成された関数の通常の入力になるNfun(Dates)を呼び出せるようにしたいと思います。カスタムRパッケージの関数を返す関数

#' A function to return interpolated N input data 
#' 
#' function to return interpolated N input data for decimal dates 
#' @param Dates A scalar or vector of decimal input dates 
#' @keywords nitrogen 
#' @export 
#' @examples 
#' Nfun() 

Nfun <- function(){ 
NInput$Date 
NInput$Ninput 
Nfun <- approxfun(NInput$Date,NInput$Ninput,rule=2) 
} 

しかし、私はこの機能で自分のパッケージをインストールしたパッケージをロードした後、私のRセッションで(1900)Nfunを呼び出すときに、私が取得:

Error in Nfun(1900) : unused argument (1900) 

私は

Nfun <- Nfun() 
を設定した場合

Nfun.Rスクリプトの外に、パッケージをロードした後のアクティブなRセッションで、私の機能がグローバル環境に表示され、私は電話することができます

Nfun(1900) 
[1] 0.7846106 

しかし、私はこれを行う必要はありません。私は自分のパッケージ関数を定義する方法にいくつかの基本的な間違いをしていると思っていますが、私は困惑しています。

+0

あなたはこれらの名前で混乱を招いていますが、名前を付けてはいけません**すべて** Nfun'! –

+0

https://stackoverflow.com/q/20223601/1412059 – Roland

答えて

1

Nfunの実装には引数がないため、エラーが発生します。

私が正しく理解している場合、approxfunNfunで関数を作成したい場合は、ユーザー入力の関数の値を返します。正しいですか? その場合は、次のように動作します。

Nfun <- function(x){ 
    NInput$Date 
    NInput$Ninput 
    Nfun <- approxfun(NInput$Date,NInput$Ninput,rule=2)(x) 
} 
+0

私はまた、オブジェクトにオブジェクトを割り当てる必要なく、値を出力することもできます。次のようなものをお勧めしますか?print(Nfun(x))? – user29609

+0

'print'が動作します。 'cat'と' message'は他の候補になります。 –