問題タブ [s4]
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 - Rパッケージでのグループジェネリック関数の定義
作成しているRパッケージ内でジェネリックグループを定義するのに問題があります。
これはかなり最小限の例です:
このコードをRターミナルに貼り付けると、すべてが期待どおりに機能します。
ただし、これをパッケージにビルドしようとすると、次のエラーが発生します。
package.skeleton()からのデフォルトの出力を使用しており、以下を追加しています。
NAMESPACEファイルに
私が間違っていることについて何か考えはありますか?
r - roxygen2を使用したS4メソッドの文書化:ヘルプファイルでメソッドを明確に区別する
狙って撃つ前に
この質問はこの投稿と密接に関連していることを私は知っています。実際、私はさまざまな回答で与えられたアドバイスに従いましたが、結果のヘルプファイルは少し「ぎこちない」か、少なくとも少し「まとまって」いるように感じます。したがって、私の質問です。
実際の質問
- S4ジェネリックとそれぞれのメソッドをドキュメント化する場合、ユーザーがさまざまなメソッドを明確に区別できるRdファイル構造を作成して、ドキュメントのどの部分が特定のメソッドに属しているかを明確にするにはどうすればよいですか?
- タグを提供した場合、特定のメソッド
@alias
のヘルプを取得しようとするときに実際にタグを使用するにはどうすればよいですか?ただタイプする代わりに何か??foo-character-method
?foo
- 各メソッドにはそれぞれのドキュメントが確実に含まれるため、a)ジェネリックメソッドの署名引数をまったくドキュメント化しない方がよいでしょう。b)これもそれぞれのメソッド次第であるため、戻り値はありますか?
今のところ、少なくとも視覚的には、一般的な方法とさまざまな方法の適切な区別を実際には処理できないように見えるヘルプファイルになってしまったように感じます。
しかし、多分私はまだこれを完全に取得していません;-)。この場合、どんなポインタでも大歓迎です!
mypkg
これは、S4ジェネリックと2つのメソッドを含むパッケージを生成する再現可能な例です。私はこの投稿とWritingRExtensionsで与えられたアドバイスに従おうとしました
ディレクトリの確保
ジェネリックメソッドの定義
関連するメソッドの定義
パッケージスケルトンを作成する
酸素化
Rdファイルにパッチを適用する
Rdファイルの手動編集など、手動による介入を必要としない自動チェックおよびビルドプロセスを可能にするために、パッチを適用する必要があるものもあります。
パッケージを確認してください
パッケージをビルドしてインストールします
ヘルプファイルを調査します
別の方法:ビルドとインストールの分離
r - 引数のデフォルト値をS4ジェネリック関数から関連するメソッドにディスパッチする
特定のS4ジェネリック関数/メソッドに関連付けられているすべてのS4メソッドが、特定のデフォルト値を持つことになっている仮引数を共有しているとします。直感的には、S4ジェネリックの定義でそのような議論を述べます(私には多少冗長に見える各メソッド定義でそれを述べるのとは対照的です)。
ただし、この方法では、仮引数のデフォルト値がメソッドにディスパッチされていないように見え、エラーがスローされるため、問題が発生していることに気付きました。
これは、ジェネリックとメソッドの組み合わせを持つという考えにいくらか反対ではありませんか?デフォルト値が常に同じであるのに、なぜ各メソッドで仮引数を個別に記述しなければならないのですか?どういうわけか、正式な引数のデフォルト値を明示的にディスパッチできますか?
以下に、動作の簡単な図を示します。
ジェネリック関数
方法
エラー
do.both
それを修正する冗長なステートメント
r - 参照クラス、タブ補完、および強制メソッド定義
私は現在、参照クラスを使用してパッケージを作成しています。私はさまざまな情報源を読んだことから問題に遭遇しました:
SnowfallでRefClassメソッドを確実に使用できない
私が収集するのは、参照メソッドがクラス内のすべてのオブジェクトにすべてコピーされるのではなく、最初にアクセスされたときにコピーされるためです。
https://stat.ethz.ch/pipermail/r-devel/2011-June/061261.html
例として、以下を定義します。
したがって、例はクラスの新しいオブジェクトですTEST
。コンソールで入力example$
してタブを押すと、
そのため、この方法addone
はオプションとして提示されていません。ただし、電話をかけることができます。
今度はタブでもう一度表示します
だから今addone
そしてfield
そしてshow
オプションとして提示されています。
Martin Morganは、上記のリンクの1つでメソッドの定義を強制することをお勧めします。これはうまくいきます
だから今タブは与える:
私のクラスのいくつかは30以上のメソッドを持っているので、これをできるだけ簡潔にしたいと思います。私は定義しました:
タブを使用すると、次のようになります。
これは機能しますが、少し不器用に感じます。また、それは少し間違っていると感じるようにではtest$def@refMethods
なく使用されます。getRefClass("TEST")$def@refMethods
誰かが以前にこの問題に対処したことがあります。
解決策にアプローチするためのより良い方法はありますか?質問が過度に引き出された場合は、アドバイスと謝罪に感謝します。
r - スロットを条件とする多くのインスタンスからクラスのインスタンスを選択しますか?
S4
この例のように、クラスのインスタンスがいくつかあると仮定します。
単語を含むすべてのクラスの名前(つまり、名前スロットまたはオブジェクト名)を返したいと思いますtest
。grep
シングルスロットで使用する場合、部分的に機能します。
私は全体の表現「いくつかのテスト」で終わります。もちろん、これらすべてのスロットをリストに入れて、それらに適用することもできます。しかし、それでも私は、それらがどの名前に属しているかを知らずに、説明自体になってしまいます。
では、どうすれば必要なインスタンスを見つけることができますか?
クラスのインスタンスの束を別の環境に整理するのか、それともインスタンスのリストを整理するのか。
r - R のパッケージ内の関数のソース コードを表示する
重複の可能性:
R: パッケージ内の S4 関数のソース コードを表示する
パッケージ ( GEOquery
) をダウンロードして、いくつかの機能を試していました。そのうちの 1 つは と呼ばれTable
、私の理解では、データセットを集計することができS4
ます。
例えば
getAnywhere(Table)
ショー
クラスを強制できなかったので、Table
GDSデータセットを集計する方法を知ることができるようにコードを学びたいと思います-たとえば、GDSデータセットを集計することはできましたがdata.frame
as.list
S4
他の投稿で提案されているように試しましたgetMethods
が、以下は私が得たものです
入れて「どこ」も指定しようとしましたpackage=:GEOquery
が、どうやらpackage
未使用の引数です。
のソース コードが表示されないのは、私が何を間違えたのだろうかTable
。
r - ベースRS3ジェネリックにS4ディスパッチを追加
merge
S4である必要がある空間メソッドを追加しようとしています(2つの異なるオブジェクトのタイプにディスパッチするため)。
私は次のように以前の解決策を使用しようとしました:
どちらが機能しますか:
xが偽物ではなく実際にSPDFである場合、実際にそのコードを実行した場合に発生するスロットエラーを返さない(または実行しないで、単にエラーを返さない以下のより寛容なジェネリック)。SPDFは作成するのが面倒です。
問題は、S3ディスパッチが上書きされたように見えることです。
どうすればそれを回避できますか?から関数定義を削除してsetGeneric
、単純に読み取るようにしましたsetGeneric("merge")
が、それも機能しません。merge
どういうわけかS3ジェネリックをからインポートする必要がありbase
ますか?
r - S4クラスの定義はパッケージでどのように行われ、どのように適切に文書化されていますか?
クラスを定義したら、パッケージのどこに配置するのか疑問に思います。classDefintions.R
S4クラス定義を含むファイルを作成し、それをRフォルダーに配置する必要がありますか?もしそうなら、どうすればそれを適切に文書化できますか?.rd
S4クラスのファイルテンプレートはありますか?
Roxygen2でこの投稿を見つけましたが、ここから少し遅れている可能性があります。それは基本的にどのように行われ、配置されていますか?
r - S4 クラス: スロットごとに複数のタイプ
1 つまたは複数のスロットが複数のクラスになる S4 クラスを作成することはできますか? 例えば。データがベクターまたは data.frame のいずれかである状況があったとします。
それとも、サブクラス/スーパークラスの定義が必要になるような状況ですか?
PS: S4 クラスに関する有用なチュートリアルを検索しても、限られた結果しか得られません。S4 クラスの作成/使用/ドキュメントに関する優れたチュートリアルへのリンクをいただければ幸いです。