問題タブ [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 - R パッケージで S3 クラスを作成する
パッケージの S3 クラスを非常に簡単に作成するコードを作成しました。print()
カスタムメソッドなどを開発できるように、新しい S3 クラスを作成しようとしています。
単純な R スクリプトでコードをテストしましたが、関数がパッケージにラップされるとすぐに、機能が壊れて S3 クラスが作成されなくなります。パッケージを作成するための再現可能なコードを提供することはできませんが、パッケージに組み込みたい機能の簡易バージョンを以下に紹介します。
私のコードは、未加工または関数内で記述されたときに完全に機能します。
class(x)
戻りますc("integer", "newS3class")
同様に、同じことを行う関数を宣言します。これもうまくいきます。実際には、私の関数foo()
は最初に入力に対して何らかのアクションを実行し、次に新しいクラスで出力を返します。
class(1:5)
戻ります"integer"
。class(foo(1:5))
戻りますc("integer", "newS3class")
。これは予想通りです。
しかし、パッケージを開発してmypkg
実行するmypkg::foo()
と、機能が壊れます。つまり、(mypkg::foo(1:5))
ではなく「整数」を返しますc("integer", "newS3class")
。
パッケージを構成する関数からパッケージを構築する過程で、スコーピングに関して何かが起こっているため、これが機能しませんか?
r - R の「as」関数の型/起源
R の S3 OO システムは、ジェネリック関数が呼び出されるオブジェクトのクラスに応じてメソッドを呼び出すジェネリック関数を中心にしています。重要なのは、メソッドがクラス内で定義される他の OO プログラミング言語とは対照的に、ジェネリック関数が適切なメソッドを呼び出すことです。
たとえば、mean
関数は汎用関数です。
これは印刷されます
私はRを少し調べていて、as
関数を見つけました。R が関数がジェネリックではないと言っているという事実に混乱していますが、それでもメソッドがあります。
最後にas
、ジェネリックではないという警告があります。
誰かが私にas
機能が何であるか、どのように接続されているas.list
かas.data.frame
などを説明してもらえますか? Rはそれがジェネリックであると言います(ジェネリック関数からのオブジェクトのメソッドになるas.list
ことを期待しているので、R内の矛盾に少し腹を立てたくなるところです)。助けてください。as.list
list
as
r - S3ジェネリック/メソッドの一貫性をチェックしています...警告
私はすでに次の2つの議論を読みました:
Roxygen2 - Roxygen
でRパッケージを構築するときのS3メソッドの一貫性の警告
を適切に文書化する方法
そして、次の2つのチュートリアル:
http://cran.r-project.org/doc/manuals/R-exts .html#Generic-functions-and-methods
http://adv-r.had.co.nz/S3.html、
しかし私の問題はまだ解決されていません。詳細は次のとおり
です。パッケージでジェネリックな plot() の S3 メソッドを定義したいのですが、私のコードは次のとおりです。
を実行devtools::check()
すると、次の警告が表示されます。
パラメータが消えているように見えます。パラメータとlabel
の位置を交換しようとしましたが、その後のパラメータは行で消えてしまいます。これを修正するにはどうすればよいですか?log
label
x
function(x, log, ...)