adv-r icon indicating copy to clipboard operation
adv-r copied to clipboard

Confusion in 15.3.4

Open sebffischer opened this issue 2 years ago • 1 comments

The section mentions, that the helper to construct a Person object converts the age to a double so that it also works with integers, however the following is fine for me

setClass("Person",
  slots = c(
    name = "character",
    age = "numeric"
  )
)

john = new("Person", name = "John Smith", age = 12L)

Created on 2021-12-13 by the reprex package (v2.0.1)

What exactly is meant here?

sebffischer avatar Dec 13 '21 13:12 sebffischer

Ok, admittedly

setClass("Person",
  slots = c(
    name = "character",
    age = "numeric"
  )
)
Person <- function(name, age = NA) {
  new("Person", name = name, age = age)
}

Person("John Smith")
#> Error in validObject(.Object): invalid class "Person" object: invalid object for slot "age" in class "Person": got class "logical", should be or extend class "numeric"

Created on 2021-12-13 by the reprex package (v2.0.1)

but then it would be clearer if one would just use

Person <- function(name, age = NA_real_) {
  new("Person", name = name, age = age)
}

Created on 2021-12-13 by the reprex package (v2.0.1)

otherwise it kind of suggests that intergers are not numeric

sebffischer avatar Dec 13 '21 13:12 sebffischer