1. ホーム
  2. r

名前空間への依存は必要ない

2023-07-22 21:45:13

質問

私はRパッケージを構築しようとしているので、CRAN上のマニュアルを読んでいます。 私は、あなたの名前空間の関数を読み込むためにインポートを使用することが、説明ファイルで使用するための最善の策であることを理解することができました。 Descriptionファイルに追加した後、namespaceファイルにも追加してみました。 名前空間ファイルにimportFromを追加して、必要な関数を追加しました。

今、私は私のパッケージでR CMDチェックを実行すると。 としてERRORが表示されます。

名前空間の依存性が必要ありません : 'ggplot2'

補足 : 記述ファイルのDependsにパッケージを追加しても、読み込まれません。

よろしくお願いします。

私の記述ファイルを以下に示します。

Package: bigpackage
Type: Package
Title: Some title
Version: 1.0
Date: 2012-10-25
Author: Mayank Bansal
Maintainer: somename
Imports : R(>= 2.15.1), SweaveListingUtils( >=0.5.5),xtable(>=1.7-0),
        brew(>=1.0-6), knitr(>=0.8), RHive(>= 0.0-6), ggplot2(>=0.9.2)
        , brew, knitr
SystemRequirements : LaTeX(texi2dvi) must be present in the system to
        create PDF reports
Description: Some Description
License: file LICENSE
LazyLoad: yes
ByteCompile: true
OS_type : unix

どのように解決するのですか?

もし import または importFrom を NAMESPACE ファイルに記述した場合、 DESCRIPTION ファイルの Imports セクションにそのパッケージのエントリがあるはずです (Depends を使用する必要がある理由がない場合、そのパッケージは Imports ではなく Depends にエントリがあるはずです)。

以下は、関連する R 拡張の書き方

Imports' フィールドは、名前空間が (NAMESPACE ファイルで指定されたように) インポートされるが、アタッチする必要のないパッケージをリストアップします。演算子 '::' や '::' によってアクセスされる名前空間は、ここか 'Suggests' や 'Enhances' (下記参照) にリストアップされなければなりません。このフィールドには、使用するすべての標準パッケージを含めるのが理想的です。S4 を使用するパッケージを含めることも重要です(クラス定義が変更される可能性があり、その際に再インストールするパッケージを決定するために DESCRIPTION ファイルが使用されるからです)。Depends' フィールドで宣言されたパッケージは、'Imports' フィールドにもあるべきではありません。


1つの関数でパッケージを作りました f . NAMESPACEファイルを作成し、同じように importFrom の行を含むNAMESPACEファイルを作成しました。

NAMESPACEファイル

export("f")
importFrom("ggplot2","ggplot","geom_histogram")

このとき、もし私が R CMD check を実行すると、予想通り、エラーが発生します。

名前空間依存は必要ありません。'ggplot2'

しかし、もし私が Imports: ggplot2 を追加すると、DESCRIPTION ファイルは次のようになります。 R CMD check を問題なく通過します。

DESCRIPTIONファイル

Package: anRpackage
Type: Package
Title: What the package does (short line)
Version: 1.0
Date: 2012-11-07
Author: Me
Maintainer: Who to complain to <[email protected]>
Description: More about what it does (maybe more than one line)
License: GPL
Imports: ggplot2