Вам нужно на самом деле изменить объект и вызвать метод initialize
.
setClass(
Class = "SummaryData",
slots = list(
data = "data.frame",
summary_columns = "character",
info = "character"
)
)
# Constructor method of SummaryData.
setMethod("initialize", "SummaryData",
function(.Object,
data,
summary_columns,
info,
...) {
if (!missing(data)) {
.Object@data <- data
}
if (!missing(summary_columns)) {
.Object@summary_columns <- summary_columns
}
if (missing(info)) {
.Object@info <- paste("Object generated on:", Sys.time())
}else {
.Object@info <- info
}
validObject(.Object)
return(.Object)
}
)
# Wrapper function SummaryData.
SummaryData <- function(...) {
initialize(new("SummaryData"), ...)
}
Теперь некоторые проверки:
SummaryData(data = airquality, info = "hey")
#Output not shown
SummaryData(data = data.frame(a = 1, b = 2))
#An object of class "SummaryData"
#Slot "data":
# a b
#1 1 2
#
#Slot "summary_columns":
#character(0)
#
#Slot "info":
#[1] "Object generated on: 2018-12-12 20:21:09"