私はパッケージの書き方を理解するつもりですが、時間を費やしていません。ミニプロジェクトごとに、すべての低レベル関数を「functions /」と呼ばれるフォルダーに保存し、明示的に作成した個別の名前空間にそれらを供給します。
次のコード行は、「myfuncs」という名前の環境が存在しない場合は(attachを使用して)検索パス上に作成し、「functions /」ディレクトリ内の.rファイルに含まれている関数をその環境に取り込みます(使用して) sys.source)。私は通常、これらの行を、高レベルの関数(低レベルの関数を呼び出す)の呼び出し元となる「ユーザーインターフェイス」用のメインスクリプトの先頭に配置します。
if( length(grep("^myfuncs$",search()))==0 )
attach("myfuncs",pos=2)
for( f in list.files("functions","\\.r$",full=TRUE) )
sys.source(f,pos.to.env(grep("^myfuncs$",search())))
変更を加えるときは、常に同じ行で再ソースするか、次のようなものを使用できます
evalq(f <- function(x) x * 2, pos.to.env(grep("^myfuncs$",search())))
作成した環境での追加/変更を評価します。
それは私が知っているだらけですが、それについてあまりに形式的になる必要がないようにします(ただし、機会があれば、パッケージシステムを奨励します。うまくいけば、将来そのように移行します)。
コーディング規約に関しては、これは美学に関して私が見た唯一のものです(私はそれらを好きで、大まかにフォローしていますが、Rであまり多くの中括弧を使用していません)。
http://www1.maths.lth.se/help/R/RCC/
[、drop = FALSE]と<-の使用に関する他の「規約」があり、useRのさまざまなプレゼンテーション(通常はキーノート)で提案されている代入演算子として!会議ですが、これらは厳密ではないと思います([、drop = FALSE]は、期待する入力がわからないプログラムに役立ちます)。