問題タブ [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 コンストラクターとプロトタイプ
Hadley Wickham の S4 wiki を見る: https://github.com/hadley/devtools/wiki/S4
Person のコンストラクターをどのように設計できますか (このように)
それはこれをしません:
r - RでS4オブジェクトのファイルを分割して書き込む方法
以下のような S4 クラスのオブジェクトがあります。
このオブジェクトから、Slot Seq | の列を含むファイルを生成したいと思います。スロット chr | スロット開始 | スロットエンド | スロットストランド | スロット seqID | スロット位置 | スロット pval | スロット fastaHeader。
上記の S4 オブジェクトからこのような .txt ファイルを生成して書き込むにはどうすればよいですか?
r - S4関数スーパークラスのスロットへのアクセス
「関数」のS4スーパークラスを作成し、関数呼び出しからそのオブジェクトのスロットにアクセスできますか?現時点で私は持っています:
今私が本当に望んでいるのは、関数がそれ自体の@powスロットのxの累乗になることです。
私はキューブを手に入れます、そして私がそうするなら:
私は正方形を取得します。
しかし、Pythonで行うように、「自己」への参照を取得する方法がわかりません。どこかの環境のどこかで推測しています...
Pythonでの動作は次のとおりです。
本当に簡単なことではありませんでした、そして私は「反重力をインポートする」ことさえする必要がありませんでした…。
oop - RのS4に複数のオプションで空のスロットを持つクラスを定義する効率的な方法は?
最大4つの異なるタイプで到着するデータを処理するパッケージを構築しています。これらの各タイプは、matrix、data.frame、またはtreeの形式の正当なクラスです。データの処理方法やその他の実験的要因によっては、これらのデータコンポーネントの一部が欠落している場合がありますが、この情報を特別なクラスのインスタンスとして保存し、異なるコンポーネントを認識するメソッドを持つことができると、非常に便利です。データ。
アプローチ1:
ネストされたツリーのように見える増分継承構造を実験しました。データ型の各組み合わせには、明示的に定義された独自のクラスがあります。これを将来追加のデータ型に拡張することは困難であるように思われ、新しい開発者がすべてのクラス名を学習することも困難ですが、それらの名前は適切に編成されている可能性があります。
アプローチ2:
2番目のアプローチは、4つのデータ型すべてのスロットを含む単一の「マスタークラス」を作成することです。欠落データのインスタンスに対してスロットをNULLにできるようにするには、最初にNULL
クラスと新しいデータ型クラスの間に仮想クラスユニオンを定義し、次に仮想クラスユニオンを関連するクラスの期待されるクラスとして使用する必要があるようです。マスタークラスのスロット。次に例を示します(各データ型クラスがすでに定義されていると仮定します)。
したがって、質問は次のように言い換えることができます。
これらのアプローチのいずれかに対して、より効率的および/または柔軟な代替手段はありますか?
この例は、スロットのデフォルト値をNULLに設定することに関するSOの質問への回答から変更されています。この質問は、他のすべての空でない場合に特定の複雑なクラスが必要であるにもかかわらず、必要に応じて空にできるスロットを持つクラスを作成するためのRの最良のオプションを知りたいという点で異なります。
r - 強制メソッドの書き方
カスタムメイドの参照クラスがたくさんあり、それらの強制メソッドを書きたいと思っています。関数呼び出しが次のようになるといいでしょう。
...
特定の強制のために追加のものを渡したい場合があるため、重要な部分はどこですか(以下を参照) do.deep = TRUE/FALSE
。
ただし、それを行うには、to
引数を取り、指定されたクラスの空のオブジェクトをインスタンス化してからto
「通常の」メソッドディスパッチを呼び出す「トランスフォーマー」のようなものを実装する必要がありますか? それとももっと良い方法がありますか?
以下に、私の現在の解決策を示します。character"
それは機能しますが、このクラスは通常のディスパッチャーへの処理に使用されto = "character
、無限再帰が発生するため、クラスに強制するオプションを「失っています」 。さらに、それは多くのオーバーヘッドです。
編集 2011-12-02
もちろんsetAs
、チェックする最初のアドレスになります。しかし、arg def
in で指定された関数setAs
は 1 つの引数しかとることができません。do.deep = TRUE/FALSE
たとえば、を使用するときにスイッチを含める方法がわかりませんsetAs
。
クラス定義
一般的な方法
中間変圧器
「MyVirtual」から「list」への強制メソッド
テスト走行
r - S3 クラスの show メソッドを定義する
show が S4 ジェネリックであり、S3 ディスパッチを使用して show 関数を機能させる方法が見つからないことを知って、私はかなり唖然としました。簡単なデモンストレーション:
ここでは S3 ディスパッチはありません...
どう思いました?
そして、印刷のためにそれは機能します。
S3 にとどまるかなりの理由があります (その大部分は、オブジェクトがブートストラップで広く使用されるため、オーバーヘッドの最小化です)。ここで別の show および print メソッドを定義するにはどうすればよいですか?
r - 同じ名前の関数が既に存在する場合は、S4 メソッドを定義します
関数myFunctionがあり、同じ名前の S4 メソッドを作成する必要があります (理由は聞かないでください)。myFunction
の古い機能を維持したいと思います。
古い機能を維持する方法はありますか?
シグネチャが大きく異なる可能性があるため、この古い関数のジェネリックを設定したくありません...
r - S4 オブジェクトのスロットの値を取得していますか?
だから私はRにspatialpolygonsオブジェクトを持っています。しかし、「エリア」スロットを取得できない理由がわかりません。
これが私のRセッションです:
r - 多重継承の使用が推奨されないのはなぜですか?
RでS4クラスを作成しています。
https://github.com/hadley/devtools/wiki/S4で読みました
S4は多重継承をサポートしていることに注意してください。ただし、メソッドの検索が非常に複雑になるため、これは細心の注意を払って使用する必要があります。
メソッドルックアップとは何ですか?また、多重継承で複雑になるのはなぜですか?