問題タブ [r-s3]
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 - 基本クラスのメソッド定義
なぜこれが機能するのか
しかし、これはエラーをスローしますか?
"tre" + "tri" のエラー: 二項演算子への数値以外の引数
r-package - R CMD ドットの前の名前の部分が utils のジェネリックと一致する、名前にドットを含む非 S3 メソッドをチェックします
この質問は、 roxygen2 v4 を使用して名前にドットを含む S3 以外のメソッドをエクスポートすることに関連していますが、これとは異なります。その投稿から@export function.name
、名前空間が roxygen によって正しく書き込まれるためには、使用する必要があることを学びました。私はそれを行い、NAMESPACEは正しく書かれています。
私の問題は、R CMD Check を実行するときに発生します。function を持つレガシーコードがありますtail.g()
。R CMD Check は、明らかな S3 メソッドがエクスポートされたが登録されていないことを通知する NOTE をスローします。
再現可能な例を以下に示します。注がxxxx.g
ないことに注意してください。これtail
は、utils パッケージのジェネリックであるため、特別な回避策が必要であると私に信じさせます。これはレガシー コードであるため、tail.g の名前を tail_g に変更したくありません。CRAN 提出を成功させるために、すべてのメモを削除したいと思います。
注:
名前を変更せずに tail.g() の NOTE を削除するにはどうすればよいですか?
r - Rでの動的クラス強制
Rでオブジェクトを動的に強制する方法はありますか?
背景 渡されたオブジェクトのクラスに基づいて特定のメソッドを返すことができる要約用の関数ファクトリを作成しようとしています。特に、これはhttp://adv-r.had.co.nz/Functional-programming.html#lists-of-functionsの質問の 1 つです。
base::summary() のように機能するサマリー関数を実装しますが、関数のリストを使用します。クロージャを返すように関数を変更し、関数ファクトリとして使用できるようにします。
たとえば、いくつかのバリエーションを試しましたが、それらはすべて正しくない/不完全です。
as.() のようなオブジェクトを動的に強制する方法があり、これを使用して汎用オブジェクトから適切なメソッドを返す方法があるかどうか疑問に思っています。
summary.new.list 関数
たとえば、オブジェクトに基づいて関数を呼び出したい。呼び出したいデータフレームの場合summary.new.list$df(data.frame(1:12,3,4))
。$df 関数はまだ一般的であるため、現在は機能していますが、 UseMethod の代わりに、そこから基本的な summary.data.frame 関数を呼び出したいと思います
r - R: 行列の "[" の動作を書き換えますか?
「マトリックス」クラスを追加して、「[」のデフォルトの動作を上書きしようとしています。以下のコード例:
基本的な考え方は、サブセット化後にマトリックスに特定の属性を保持させることです。
しかし、私は問題に直面しています:
カンマがある場合とない場合で異なる動作をするように "[" 関数を記述する方法:
行列のデフォルトの「[」がそうであるように。
デフォルトで第2引数を何らかの値に設定しようと考えていましたが、カンマが追加されているため、値は変更されません。
r - 複数の関数を運ぶ R オブジェクトの名前
S3 オブジェクトの構築に関する Hadley のアドバイスを読んで、私はヘルパー関数、コンストラクター関数、およびバリデーター関数を使用しています。簡単な再現可能な例:
結果のオブジェクトに、渡されたアイテムが持っていた元の名前の値を含めたいと思います ($x_name
上記の例)。コンストラクターを直接呼び出すと、deparse(substitute(...))
トリックが機能します。
しかし、ヘルパー関数を使用する場合はそうではありません:
私test_helper$x_name
も戻りたい[1] "alpha"
です。
deparse(substitute(...))
ヘルパー段階でステップを実行する以外に、コンストラクター関数 ( )がヘルパー経由でnew_test_object()
オブジェクトの「元の」名前にアクセスする方法はありますか? x
または、ヘルパー関数がそれをコンストラクターに渡すときに、その名前が確実に通過するようにしますか?