私はS4クラスmyclass
を作成し、彼らは私が次のエラーメッセージが表示されますS4クラスのコンストラクタと検証
setClass("myclass", slot = c(x = "numeric"))
#constructor
ValidmyClass<- function(object, param = 1)
{
if([email protected] == param) return(TRUE)
else return("problem")
}
setValidity("myclass", ValidmyClass)
setMethod("initialize","myclass", function(.Object,...){
.Object <- callNextMethod()
validObject(.Object,...)
.Object
})
れるパラメータparam
によって与えられた条件を確認する場合は、オブジェクトが作成されることを保証するために、短いコードを提示Error in substituteFunctionArgs(validity, "object", functionName = sprintf("validity method for class '%s'", : trying to change the argument list of for validity method for class 'myclass' with 2 arguments to have arguments (object)
私は議論の問題を理解していますが、私はこれを解決する方法を見つけることができません。 setValidity
についてのドキュメントでは、引数のメソッドが「NULL
または1つの引数(オブジェクト)の関数」である「有効性メソッド」である必要があると述べています。したがって、複数の議論を除いて私の理解から。
しかし、この例の背後にある考え方は、与えられた外部パラメータの値に基づいてmyclass
オブジェクトの構築をテストできるようにすることです。さらに条件を追加する必要がある場合は、十分な柔軟性を求めて、機能を追加する必要がありません。スロットを追加する必要はありません。ValidmyClass