Я создаю генератор для объекта ссылочного класса с именем «student», но при попытке инициализировать объект этого класса я получаю сообщение об ошибке. Я попытался инициализировать два разных способа (оба показаны ниже) и получил две отдельные ошибки. Код, который я использую, и возникающие ошибки приведены ниже. Может кто-нибудь объяснить, где я ошибся?
1) Инициализация непосредственно из генератора - без именованных аргументов (Это ошибка, которую я получаю последовательно, если я не предоставляю имена аргументов генератору)
student <-
setRefClass("student",
fields =
list(name = "character",
age = "numeric",
GPA = "numeric"))
s <- student("John", 21, 3.5)
Error in initialize(value, ...) : cannot use object of class “numeric” in new(): class “student” does not extend that class
5.
stop(gettextf("cannot use object of class %s in new(): class %s does not extend that class", dQuote(Classi), dQuote(Class)), domain = NA)
4.
initialize(value, ...)
3.
initialize(value, ...)
2.
methods::new(def, ...)
1.
student$new("John", 21, 3.5)
2) Явная инициализация с использованием метода «new» и именованных аргументов
student <-
setRefClass("student",
fields =
list(name = "character",
age = "numeric",
GPA = "numeric"))
s <- student$new(name = "John", age = 21, GPA = 3.5)
Error in initialize(value, ...) : invalid names for slots of class “student”: name, age, GPA
5.
stop(sprintf(ngettext(sum(is.na(which)), "invalid name for slot of class %s: %s", "invalid names for slots of class %s: %s"), dQuote(Class), paste(snames[is.na(which)], collapse = ", ")), domain = NA)
4.
initialize(value, ...)
3.
initialize(value, ...)
2.
methods::new(def, ...)
1.
student$new(name = "John", age = 21, GPA = 3.5)