1

I'm trying to make "class1" an element of "class2". But when "class1" has an initialize() function, I get the following error:

class1 <-
  setRefClass(
    'class1',
    fields = list(attribute1 = 'character'),
    methods = list(
    initialize = function(a){
      attribute1 <<- a
    }
   )
  )

class2 <- 
  setRefClass(
    'class2',
    fields = list(attribute2 = 'class1')
  )

Error in .Object$initialize(...) : argument "a" is missing, with no default

Robert Bray
  • 393
  • 3
  • 7

1 Answers1

0

Give the initialize method a default value:

class1 <-
  setRefClass(
    'class1',
    fields = list(attribute1 = 'character'),
    methods = list(
      initialize = function(a = NA_character_){
        attribute1 <<- a
      }
    )
  )

class2 <- 
  setRefClass(
    'class2',
    fields = list(attribute2 = 'class1')
  )
test <- class2()
> test
Reference class object of class "class2"
Field "attribute2":
  Reference class object of class "class1"
Field "attribute1":
  [1] NA
jdharrison
  • 30,085
  • 4
  • 77
  • 89