0

我想在 R 中做基本的对象组合,我正面临这个简单的问题。我有 2 个 R5 类,“Lambda”和“Composition”。
“组合”类具有“Lambda”类的属性。无法创建类“组合”:".Object$initialize(...) : argument "lambda" is missing, with no default" 如果 lambda 在初始化方法中有默认值,则它可以工作:initialize = function(lambda=1){ 但我不希望那样。

setRefClass(
    "Lambda",
     fields =  c(
       lambda = "numeric"
        ),

      methods=list(
        initialize = function(lambda){
        check_lambda (lambda)
         lambda <<- lambda
        },

       check_lambda = function(new_lambda){
          print ("checking...")
          return(T)
        }
      )
 )

setRefClass(
  "Composition",
    fields =  c(
      object_lambda = "Lambda"
    ),
  methods=list(
    initialize = function(object_lambda){
      object_lambda <<- object_lambda
    }
  )
)

谢谢你的帮助。

4

1 回答 1

0

I found a solution to my question : set the field to "ANY" of my class "Composition" :

 setRefClass(
  "Composition",
  fields =  c(
    object_lambda = "ANY"
  ),
  methods=list(
    initialize = function(object_lambda){
      object_lambda <<- object_lambda
    }
  )
)
于 2016-01-22T18:50:04.780 回答