問題タブ [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 - S4クラスを含むパッケージで推奨されるパッケージビルドワークフローは何ですか?
S4 classes
RStudioとを使用したパッケージを作成したいと思いますroxygen2
。パッケージにroxygen2
いくつかを導入したとき、構文を使用してすべての関数をすでに文書化していました。S4 classes
今、私は、すぐに使える「@slot」機能がないことに気づきました。それで、他の機能のためにすべてのドキュメントを機能させ続け、このスレッドS4 classes
で提案されているように手動でドキュメントを作成するにはどうすればよいでしょうか?
つまり、古い学校の機能との両方を含むパッケージを構築するために、どのワークフローをお勧めしますS4 classes
か?
編集:.Rdファイルを作成しないようにRStudioで構築されたツールを構成することをお勧めしますか。roxygenize
手動で情報を追加し、後で情報を追加しますか?それでも、これはクラスの手動で生成された.Rdファイルを上書きすることにつながります...
r - S4 の setMethod - オブジェクトを引数として必要としないメソッドを定義する方法は?
R で S4 クラスを使用して、オブジェクトに 2 つの値を割り当てるメソッドを定義します。
そして、次のように使用します
しかし、これはobj
、関数への引数として常に記述しなければならないことを意味します。
オブジェクト自体を引数として使用せずに使用できるメソッドを S4 で定義することは可能ですか?
例えば:
あらゆる種類の提案に非常に感謝しています! :)
r - R S4 クラスと Matrix パッケージでの + 演算子のオーバーロード
+
演算子をオーバーロードしようとして、Matrix
パッケージを疎行列で使用すると、奇妙な効果が得られます。最初に、Matrix パッケージを使用しないが+
演算子を持つ非常に単純なクラスを定義します。次に、2 つの疎行列を合計します。最初のM+M
加算では期待どおりの結果が得られますが、2 番目の加算ではエラーがスローされます。エラーを生成する非常に単純なコードを次に示します。
2 番目の追加では、次のエラーがスローされます。
また、行列が疎でない場合、エラーは発生しません。+
I define と+
for sparseMatrixの間に干渉はありますか? +
演算子を正しく定義していませんか?
ありがとうございました!
r - S3 仮想クラスを S4 クラスのスロットとして使用し、エラーが発生しました: クラス "S4" を取得しました。クラス "nls.lm" である必要があります。
R バージョン:
nls.lm (パッケージ: minpack.lm) の関数の出力オブジェクトをスロットとして使用する S4 クラスを作成したい:
さて、このクラスを「コンストラクター関数」で呼び出したい場合は、次のようなことができます (正しいですか?):
オブジェクト「pippo」は正しく初期化されているようです。
代わりにこのコードを使用すると、エラーが発生しました。
新しいいくつかのスロットで INIT を実行したい場合、これは S3 クラス スロットで問題を引き起こしますか?
この問題を回避する方法の手がかりはありますか?
ありがとう
r - 'spec'S3クラスを新しいS4クラスに変換します
(クラス'spec')R
から返されたオブジェクトを(強制?)新しいS4クラスに変換したいのですが。stats::spectrum
S3クラスの「spec」は、基本的に、さまざまな形式のさまざまな情報のリストです(画面出力にコメントしました)。
ここで、「specS4」という名前のクラスに新しいS4ジェネレーターを定義するとします。ここで、スロット名は「spec」オブジェクトの名前です。
そしてそれから新しいオブジェクトを生成します:
psd3
の各コンポーネントを対応するスロットに割り当てる最良の方法は何でしょうpsd4
か。 複雑なのは、いくつかの(既知の)フィールドにspectrum
戻る可能性があることです。これらの値を割り当てると、 (指定された表現に対して)NULL
エラーがスローされます。checkSlotAssignment
私が持っている苦痛な解決策は次のとおりです。
as.specS4.spec
意図的に不完全ですが、これは機能します。
何を達成するためのより良い方法はありas.specS4.spec
ますか?この解決策は不安定なようです。
r - R:S4スロットの出力を生成するソースコードを見つけますか?
G'dayみんな、
'lme4'の'lmer'関数を実行すると、多くのスロットを持つS4オブジェクトが生成されます。これらのスロットの1つ、つまりmodel @ Xと、この「X」スロット出力がどのように生成されるかに興味があります。この出力を、この「X」出力を自動的に生成しない別のモデル関数(glmmPQL)で再現してみたい(FYI「lmer」はクラス「mer」のオブジェクトを生成し、スロット「X」はモデルです)固定効果の行列)。以下のコードは、私が話していることを示しています。
私が理解したいのは、この「X」データがどのように生成されたかです。ターミナルに「()」を付けずに「lmer」のコードを記述して調べましたが、何も見つかりませんでした。showMethod('lmer')も試しましたが、関数'lmer':と表示されます。
「X」スロットが特に実行していること(またはS4オブジェクトの任意のスロット)のソースコードを取得する方法があるかどうか疑問に思っていますか?または、これを再現する方法を知っている人はいますか?あなたの助けと時間をありがとう。
r - S4 クラスの R パブリック メソッド
S4 クラスをサブクラス化し、そのサブクラスに特別なメソッドを追加したいと考えています。メソッドはサブクラスに対してのみ機能するはずです。アプリケーション内の他のクラスでは意味がありません。
それはsetGeneric
機能しますが、このオブジェクトでのみ使用されますが、本当にジェネリック関数を定義する必要がありますか? コメントアウトされた部分は機能しますが、関数が正しい引数で呼び出されているかどうかはチェックされません。これを行う正しい方法は何ですか?前もって感謝します。
r - Rでユーザー定義のS4クラスのデータフレームを作成する方法
S4クラスを含むさまざまな変数のdata.frameを作成したいと思います。「POSIXlt」(日付用)のような組み込みクラスの場合、これは正常に機能します。
しかし今、私はユーザー定義のクラスを持っています。たとえば、名前と年齢を持つ「Person」クラスを考えてみましょう。
しかし、以下は失敗します:
私もオーバーロードしようとしました[...]-を使用して人のクラスの演算子
これにより、ベクトルのような動作が可能になります。
しかし、それでも次は失敗します。
おそらく、ユーザー定義クラスをデータフレームに取り込むために、より多くの演算子をオーバーロードする必要がありますか?POSIXltはS4クラスであり、機能するため、これを行う方法があるはずです。新しいR5参照クラスを使用するソリューションも問題ありません。
すべてのデータをpersonクラスに入れたくありません(「id」がpersonのメンバーではない理由は、データフレームを使用しないだけです)。アイデアは、私のdata.frameが、文字列、数値など、さまざまなタイプの多くの列を持つデータベースのテーブルを表すということですが、日付、間隔、ジオオブジェクトなどもあります。間隔、ジオオブジェクトなどのソリューション(POSIXlt)。おそらく、独自のS4/R5クラスを指定する必要があります。
よろしくお願いします。
r - 3つのドットでS4メソッドを定義する
作成したオブジェクトの「c」メソッドを定義しようとしています。
何かのようなもの
問題は、ディスパッチが適切に行われるように...のクラスを定義できないことです。何か案が?
r - unlist()に相当するS4はありますか?
オブジェクトとそのスロットの操作経験があるS4
ので、特定のスロットとサブスロットにアクセスする方法を知っています。私が学びたいのunlist
は、S3
リストを分解する方法でオブジェクトを「スロット解除」する方法です。
私の当面の目標は、オブジェクトの要素の数を返す私のおもちゃの1つに対応するS4を用意することです。
(私のコードを公正に笑うことはありません:-))。スロットを一度に1つずつ抽出して変換する再帰ルーチンを作成する必要がないことを望んでいます。
編集:object.size
バイトカウントが返されることはわかっています。私がここで求めているものではありません。