2

以下のコードがエラーをスローする理由を理解しようとしています。

Error in .local(.Object, ...) : argument "data" is missing, with no default

問題コード:

setClass("A", representation(a="numeric"), "VIRTUAL")
setClass("B", representation(b="numeric"), contains="A")

setMethod("initialize", "A", function(.Object, data){
  .Object@a <- data[1]
})

setMethod("initialize", "B", function(.Object, data){
  .Object@b <- data[2]
  callNextMethod()
})

data <- 1:2

new("B", data)

ご協力ありがとうございました!

4

2 に答える 2

4

多分これはあなたが探しているものですか?

setClass("A", representation(a="numeric"), "VIRTUAL")
setClass("B", representation(b="numeric"), contains="A")

setMethod("initialize", "A", function(.Object, data){
  .Object@a <- data[1]
  .Object
})

setMethod("initialize", "B", function(.Object, data){
  .Object@b <- data[2]
  .Object <- callNextMethod(.Object, data)
  .Object
})

data <- 1:2

new("B", data)
于 2013-08-08T12:50:44.237 に答える
0

このスレッドでヘルプを見つけました: Stack Overflow - Inheritance in R

以下の適応コード例を参照してください。

setClass("A", representation(a="numeric"), "VIRTUAL")
setClass("B", representation(b="numeric"), contains="A")

setMethod("initialize", "A", function(.Object,..., a=numeric()){
  .Object@a <- data[1]
  callNextMethod(.Object, ..., a=a)
})

setMethod("initialize", "B", function(.Object,..., b=numeric()){
  .Object@b <- data[2]
  callNextMethod(.Object, ..., b=b)
})

data <- as.numeric(1:2)

new("B",a=data[1],b=data[2])

> An object of class "B"
> Slot "b":
> [1] 2

> Slot "a":
> [1] 1
于 2013-08-12T14:39:12.713 に答える