問題タブ [r-package]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
r - S4 クラスを拡張する R パッケージで警告メッセージ (メタデータ オブジェクトが見つからない、SpatialLinesNULL クラスがエクスポートされない) を解決する方法
これは、StackOverflow に関する私の最初の質問投稿です。プロトコル エラーがあれば修正してください。しかし、私はサイトの他の多くの質問への回答からすでに大きな恩恵を受けているので、先に進む前に、サイトに貢献しているコミュニティに感謝したいと思います.
概要
R、RStudio、およびパッケージdevtools
をroxygen2
Windows 7マシンで使用しています(session_info
質問の最後に完全に記載されています)
SpatialLines
packageから S4 クラスのサブクラスを定義し、 packagesp
も使用する独自のパッケージを作成しようとしていますrgeos
。document
私の問題は、
load_all
自分のパッケージに devtools を使用したときに、よくわからず、完全に解決できない警告メッセージに関連しています。
警告メッセージ
最初のメッセージは
これを解決すると、NAMESPACE ファイルにエントリを追加して (なぜそれが必要なのかを完全には理解せずに)、DESCRIPTION ファイルにさらに変更を加えると、2 番目のメッセージが表示されます。
私が試したこと、および私が残した質問
ヒントを求めていくつかのサイトをグーグルで検索しましたが、最も近いものは、SpatialLinesNULL がどこから来たのかを尋ねる 2011 年 12 月の短いスレッドでしたrgeos
。
http://lists.r-forge.r-project.org/pipermail/rspatial-devel/2011-December/000033.html
私は自分で何が悪いのかを理解するために実験を試み、何が起こっているのかを理解するのに十分なほど深く理解することができなかったので、道に迷うまでデバッガーでコードをステップ実行しました。その過程で、問題の小さな (そうではない) 実例が生成されました。これを以下に示します。
3 つの質問があります。それらはここに要約されていますが、実際には、以下の(実際には動作していない)おもちゃの例のコンテキストでのみ意味があります。
- 質問 1
Spatial
(test1 の後)とにかくR が (仮想?) スーパークラスを必要とするのはなぜですかMyClass2
。
明確化の追加@importClassesFrom
R のパッケージ化名前空間メカニズムは、実際に使用するクラスを編集した後、前件/スーパークラスを見つけてアクセスする必要があると考えていました。 - 質問 2 (test3 の後) 最初の警告メッセージの理由が何であれ、この同様のメッセージの理由でもあると思います。
私は正しい軌道に乗っていますか? - 質問 3 (test4 の後) test3 からの警告とそれに続くこのエラーは、自分で解決できるものですか?
rgeos
それとも、パッケージの管理者に助けを求める必要がありますか(例: export を依頼するなどSpatialLinesNULL
)?
コード例
私のおもちゃの作業例のrコード(スペースを節約するためにroxygenコメントのみを取り除いたもの)は次のとおりです。
MyClass2 の第 2 世代のサブクラスは重要なようです (それがなければ警告は消えます)。私はなぜなのか理解していない。
devtools
と を使用し
て、このコードで一連のテストを実行しましたroxygen2
。テストは、NAMESPACE ファイルの内容と、DESCRIPTION ファイルの Imports ディレクティブの内容によって異なります。テストの実行は、RStudio での実行devtools::load_all()
(または途中devtools::document()
での呼び出し) で構成されます。load_all()
発生する警告メッセージは上記に掲載されています。各テストの間にクリーンなグローバル環境で R セッションを再起動します (警告は、load_all
またはを最初に実行したときにのみ発生しますdocument
)。
以下の回答をフォローアップしているときに、シェルコマンドラインからRを使用しておもちゃのパッケージをビルドおよびインストールする必要があることに気付きました。
テスト1
test1 には DESCRIPTION ファイルのエントリがあります (完全な DESCRIPTION ファイルについては、この質問の最後を参照してください)。
完全な NAMESPACE ファイル (上で省略した roxygen コメントから生成) は次のとおりです。
再起動した R セッションで実行devtools::load_all()
(またはdevtools::document()
) しようとすると、最初の警告が生成されます (上記を参照)。
質問 1 R が ~~(virtual?)~~ スーパークラスを必要とするのはなぜですか?コードで Spatial
第 2 世代が定義されている場合にのみ、なぜですか? 明確化の追加R のパッケージ化名前空間メカニズムは、実際に使用するクラスを編集した後、前件/スーパークラスを見つけてアクセスする必要があると考えていました。MyClass2
@importClassesFrom
テスト2
test2は、警告メッセージが示すように NAMESPACE ファイルを更新することで問題を解決します。他の変更は行われませんでした。
完全な NAMESPACE ファイルが次の場合、警告は消えます。
テスト3
ただし、DESCRIPTION ファイルの Imports ディレクティブに 1 つの小さな変更を加えると、明らかに同様の問題が再発しますrgeos
。これは、test2 から test3 シナリオを作成するために行われた唯一の変更です。
これで、test1 の問題のような警告が表示されます。つまり、次のようになります。
私が知る限り、SpatialLinesNULL
は の新しいスーパークラスでありSpatial
、 で定義されrgeos
ているため、いくつかの汎用関数とメソッドを提供できます。
質問 2最初の警告メッセージの理由が何であれ、それがこの同様のメッセージの理由でもあると思います。
私は正しい軌道に乗っていますか?
テスト4
test4では、test2 で行ったのと同じ解決策を適用しようとしています。つまり、欠落しているエントリを NAMESPACE ファイルに追加します。これは、test4 の完全な NAMESPACE ファイルです。
どの段階で、最終的なエラーメッセージが表示されます:
この段階で私は立ち往生しています。
質問 3 test3 からの警告とそれに続くこのエラーは、自分で解決できるものですか? rgeos
それとも、パッケージの管理者に助けを求める必要がありますか(例: export を依頼するなどSpatialLinesNULL
)?
session_info (test4 から)
test4 の完全なファイル
R/myclasses.r
説明ファイル
名前空間ファイル
結論
提供できるヘルプ、アドバイス、またはガイダンスを事前に感謝します。たとえそれが私がより良い質問をする方法についてであっても:-)
r - packrat を使用して R を更新した後、パッケージ ビルドでパッケージを使用できない
最近 R 3.1.3 に更新し、RStudio とpackrat
. RStudio に組み込まれている「ビルドとリロード」ツールを使用してパッケージを再ビルドしようとしていますが、うまくいきません。次のエラーが表示され続けます。
問題は、ggplot2
R 3.1.2 と R 3.1.3 の両方のこのプロジェクトのローカル ライブラリと packrat ライブラリを含むすべての場所にインストールしたことです。私はそれらを無駄にロードしようとしました。
また、devtools::build()
両方devtools::document()
とも機能するので、これは RStudio の問題だと思いますか?
注: RStudio バージョン 0.99.235 を使用しています。
編集:パッケージのドキュメントも表示されず、packrat ライブラリにないようです。
2番目の編集:R 3.1.3をアンインストールしてR 3.1.2に戻しましたが、まだ同じ問題が発生しています。
3番目の編集:これらは私の依存関係です:
r - R パッケージの data.frame の作成
R パッケージを作成していますが、パッケージ内の関数を使用して開かれたファイルを追跡する必要があります。
ユーザーから (十分に) 隠されている方法でパッケージをロードする際に、R オブジェクト (この場合は data.frame) を作成するための推奨される手順は何ですか? ユーザーが data.frame を手動で編集することは望ましくありません。
options
私が持っていた 1 つのアイデアは、呼び出し内の設定でdata.frame を作成することでした.onLoad
(Hadley が彼のdevtools
パッケージhereで行うことと同様です) が、開いているファイルのリストは、私のパッケージでは実際には構成可能な「オプション」ではありません。別の方法はありますか?
c++ - Rの.C()関数でfastaデータを引数として使う方法
「test.cc」という名前の関数として、C++ でメソッドをプログラミングしました。プログラムの構文は次のとおりです。
input.fastaはデータファイルです
Thetaは 2 ~ 10 の数値範囲です。出力はoutput.txtファイルに保存されます。
R パッケージの開発用。まず、次のコマンドを使用してコンパイルしました。
「test.dll」ファイルを生成しました。次のコマンドを使用して R にロードします。
テスト関数を呼び出そうとしていますが、データの読み取り中にエラーが発生します。
このコマンドを使用した経験はありません。問題は、input.fasta を .C() に読み取り、出力をファイルに書き込む方法です。
この問題に対処するためのアイデアを提供していただければ幸いです。
r - 他のパッケージをロードし、すべての関数をエクスポートするだけのRパッケージを作成します
他の R パッケージからすべての関数をエクスポートするだけの R パッケージを作成することは可能ですか? マニュアルやコードファイルなどで、パッケージ内の機能を分類して順序付けする別の方法はありますか?
r - パッケージ vignette の R コードは、セキュリティ上の理由から CRAN で実行できません。そのようなビネットを管理する方法は?
R パッケージは、プライベートな user_name とパスワードを使用して商用データベースと通信し、接続を確立します。package_vignette.Rmd ファイルには、コードのチャンクがあります。
私には実際の user_name と password を CRAN に提供する権利がないため、パッケージに本物の「connection.config」ファイルを提供することはできません。したがって、もちろん、このコード フラグメントは CRAN チェック中にエラーを引き起こします。
CRANチェックを回避する2つの方法を知っています:
ニットオプションを使用してください:
eval = FALSE
.R.rspパッケージの助けを借りて静的ビネットを作成します。
最初の方法は、たくさんのチャンクがあり、ビネットを頻繁に書き直したり再構築したりするため、時間がかかりすぎます。私には 2 番目の方法が適しています。しかし、そのようなビネットをサポートするためのより良いパターンがあるのではないでしょうか? たとえば、パッケージのテストでは、testthat::skip_on_cran()
CRAN チェックを回避するために使用します。
r - パッケージをビルドする際の rcpp openmp プラグイン
スタンドアロンの cpp スクリプトを作成するときは、openmp を使用して含めます // [[Rcpp::plugins(openmp)]]
。
しかし、Rcpp で R パッケージをビルドしようとすると、プラグインがあることをコンパイラに知らせる方法がわかりません。説明を追加しようとしましPlugin:openmp
たが、うまくいきません。
誰でも助けることができますか?
r - Apache SparkR パッケージのインストール中にエラーが発生しました
Apachesparkr
パッケージのインストール中に次のエラーが発生します。