問題を再現するコードのスニペットを作成するのに時間がかかりました。ここにあります。コマンドを実行するnew("FirstSet", id = "Input", multiplier = 2)
と、正しい答えが得られることに注意してください。ただし、両方を含むクラスを作成しようとすると、次のようになりますError in .local(.Object, ...) : argument "id" is missing, with no default
。これは文字通り、問題を説明/表示するために私ができる最善の方法です。
私は一体何を間違っているのでしょうか?
setClass("Details",
representation(
ID = "character",
Anumber = "numeric"))
Input <- new("Details",
ID = "Input",
Anumber = 2)
setClass("FirstSet",
representation(
Anothernumber = "numeric"))
setGeneric(
name = "FirstSet",
def = function(object){standardGeneric("FirstSet")}
)
setMethod("initialize",
signature(.Object = "FirstSet"),
function (.Object, id, multiplier)
{ x = id@Anumber
y = x * multiplier
.Object@Anothernumber = y
return(.Object)
}
)
setClass("Super", contains = c("Details", "FirstSet"))
修正されたコードで新しいエラーが発生するようになりました。投稿の指示に従い、問題を解決しました。「スーパー」のジェネリックとメソッドも作成しました。以下のコードを参照してください。今、私は新しいエラーを受け取ります。.local(.Object, ...) のエラー: スロットのない基本クラス ("character") のオブジェクトからスロット "Anumber" を取得しようとしています。男、これは疲れます、私はそれを持っていると思いました。
詳細の目標は、シリアル化される多くのファイルが存在し、ファイル内のデータの特性に応じてメソッドが呼び出されることです。これはRでも可能ですか、それともRではできないことをしようとしていますか?
新しいコード
setClass("Details",
representation(
ID = "character",
Anumber = "numeric"))
setGeneric("Details",
def = function(object){standardGeneric("Details")})
setMethod("initialize",
signature(.Object = "Details"),
function(.Object, ID = character(), Anumber = numeric()){
.Object@ID = ID
.Object@Anumber = 2
return(.Object)
})
setClass("FirstSet",
representation(
Anothernumber = "numeric"))
setGeneric(
name = "FirstSet",
def = function(object){standardGeneric("FirstSet")}
)
setMethod("initialize",
signature(.Object = "FirstSet"),
function (.Object, id = character(), multiplier = numeric())
{ x = id@Anumber
y = x * multiplier
.Object@Anothernumber = y
return(.Object)
}
)
setClass("Super", contains = c("Details", "FirstSet"))
setGeneric("Super",
def = function(object){standardGeneric("Super")})
setMethod("initialize",
signature(.Object = "Super"),
function(.Object, id = character(), Anumber = numeric()){
Details <- new("Details", ID = id, Anumber = Anumber)
FirstSet <- new("FirstSet", Anothernumber = Anothernumber)
Super <- new("Super", Details, FirstSet)
return(.Object)
})