R Developer Page には、リリース前のバージョンを含む R の最新情報が掲載されています。 次期リリース (2011/10/31) 予定のバージョンでの仕様変更に伴って、パッケージ開発者がアップデートする必要がある情報が Updating packages for 2.14.0 に記載されていますので、これをまとめてみます (ミスがあるかもしれませんので原文も合わせてご確認ください)。
R 2.14.0 は 2011/10/31 にリリース予定です。 パッケージ管理者は以下の変更点に留意してください。
全てのパッケージは遅延ロードされるようになります。
DESCRIPTION
ファイルに LazyLoad
フィールドを設定している場合は削除してください。
LazyLoad: false
を指定した場合、インストール時に警告が出ます。
これによって影響を受けるパッケージは非常に少ないでしょう。 影響を受ける場合の多くは、トップレベルコードとその副作用を利用したパッケージだと思われます。 この問題については 'Writing R Extensions' でもずっと警告を行っていました。
全てのパッケージに名前空間が設定されます。
NAMESPACE
ファイルが無い場合、R CMD INSTAL
の実行時に NAMESPACE
ファイルが自動生成されます (R CMD build
でも同様に自動生成を行います)。
自動生成される NAMESPACE
ファイルを用いても、ほとんどの場合 (CRAN 登録されたうち 1000 以上のパッケージで) はうまく動作するでしょう。
ただし、自動生成に頼るのではなく、この NAMESPACE
ファイルを元にして、確認の上 NAMESPACE
ファイルをアップデートするべきでしょう。
また、現在以下の問題点がある事が分かっています。
'.'
で始まる場合も) が名前空間に展開されます。
展開するシンボルを選ぶ必要がある場合も多いため、必要に応じてデフォルトから変更してください。
.First.lib()
関数を利用している場合、.onAssign
(.onAttach
のミスと思われるので以下 .onAttach
) として実行されます。
多くの場合、コンパイルされたコードをロードする場合にだけ使われており、NAMESPACE
中で useDynLib
ディレクティブで置き換えることができます。
もしコンパイルされたコードをロードする以外の目的で使っているならば、.First.lib()
関数は .onAttach()
または .onLoad()
にリネームしておくべきです。
ただし、まれに .onAttach()
と .onLoad()
の二つに分割する必要がある場合もあります。
.First.lib()
関数を .onLoad()
として実行するべき場合があり、これらは base::.Firstlib_as_onLoad
オブジェクト中にリストアップされています。
'grDevices'
パッケージが参考になるでしょう。
'quantreg'
パッケージを介して、SparseM
パッケージの t()
関数を利用する場合、名前空間に SparseM
パッケージ (または、SparseM
の中の利用する関数のみ) をインポートする必要があります。
これについては、'base'
中の関数をマスクする S4 ジェネリックが用いられている事として一般的にも認知されているでしょう。
'stats'
などの他のパッケージ中のジェネリックに対して S3 メソッドを定義している場合、ジェネリックをインポートし、かつ、S3method
ディレクティブを用いてメソッドをエクスポートする必要があります。
plot()
など) を構築した S4 メソッドを用いるパッケージは、引き継いだ関数をインポートする必要があります。
たとえば、importFrom(graphics, plot)
とします。
これは、R 2.14.x でない場合も動作するようですが、パッケージを R 2.13.x にインストールすることはできません。
Vignette ソースファイルはディレクトリ 'inst/doc'
ではなく 'vignettes'
に配置するようにしてください。
移行期間として R <= 2.13.x との互換性を保ったメンテナンスを継続したい場合、まずは .Rinstignore
ファイルを用いて、Vignette の .Rnw (etc) ファイルや .pdf ファイル以外の他のファイルがインストールされないようにしてください。
次に、ユーザーが Vignette コードを実行するために必要な他のファイルを追加してください。
もし Vignette ファイルが CRAN でコンパイルできないことが事前に分かっている場合 (例えば、特殊な LaTeX ファイルを利用している場合など) は、DESCRIPTION
ファイルの BuildVignettes
フィールドの値を false
に設定してください。
また、Vignette ファイル中の R コードは Stangle
関数によって展開されるので、実行可能なコードになっている必要があります。
データフレーム x
(sd
については行列の場合も) に対し、mean(x)
や sd(x)
を単純に実行する事は非推奨となり、警告が表示される様になります。
どちらもかなり広く用いられていますが今後は、sapply()
、vapply()
または mean
の場合はcolMeans()
に置き換えなければなりません。