2016-04-19 10 views
0

私は5列のデータフレームで動作する関数を持っています。最終的に私はこの機能をリリースして、他の人が自分のデータでそれを使うことができるようにしたいと思っています。R関数がユーザーのデータフレーム内の列を参照する正しい方法はありますか?

5つの必須の列をユーザーが渡すための関数を設計する慣用的な方法はありますか?

I.e.私の関数は(少なくとも)カラム 'a'、 'b'、 'c'、 'd'、 'e'を含むデータフレームで作業したいと考えていますが、ユーザのデータフレームでは、

  • は、5つの別々のベクトル引数
  • として個別の列に渡すために、ユーザが必要:FOO」、 『バー』、等...

    私にいくつかの特にエレガントなしているが、いくつかの可能性があります。ユーザーが指定した方法で列に名前を付け、単一の引数としてデータフレームを渡すように要求する

  • ユーザーが指定した方法で列を注文するように要求するそして、行うには一つの「最良の」方法はありません。このデータフレームに必要な列名からなるベクトルとともにデータフレームに単一の引数
  • パスとしてデータフレームに

答えて

1

を渡しますこの。さまざまな方法の利点は、状況によって異なります。この例では、私の個人的な好みは、関数に(少なくとも)2つの引数を与えることです:data.frameを「データ」として、文字ベクトルに変数の名前を含めます。

これらのそれぞれに同じ操作を適用する場合、主な引数としての文字ベクトルをsapplyまたはlapplyに指定することができます。

myFunc <- function(data=NULL, variables=NULL) { 
    if(is.null(data) stop("need a dataset") 
    if(is.null(variables) | !is.character(variables) stop("variables improperly supplied") 
} 
    sapply(variables, FUN=funciton(i) <doStuff to data[, i]>) 

ポジションがデータセット全体で変更される可能性があるため、通常はポジションではなく変数の名前を指定する方が良いです。

関連する問題