Мы могли бы сделать следующее:
random_number_generator <- function(n, distribution, mean = NULL, sd = NULL, lambda = NULL, size = NULL, prob = NULL) {
if (distribution == "Normal")
x <- rnorm(n = n, mean = mean, sd = sd)
else if (distribution == "Poisson")
x <- rpois(n = n, lambda = lambda)
else if (distribution == "Binomial")
x <- rbinom(n = n, size = size, prob = prob)
out <- list(x = x, distribution = distribution, size = size, prob = prob)
class(out) <- "MyClass"
out
}
summary.MyClass <- function(obj) {
stopifnot(inherits(obj, "MyClass"))
cat("\t\n",
sprintf("Sample size: %s\n", length(obj$x)),
sprintf("Mean: %s\n", mean(obj$x)),
sprintf("Standard Deviation: %s\n", sd(obj$x)),
sprintf("Distribution: %s\n", obj$distribution),
sprintf("Size: %d\n", obj$size),
sprintf("Probability: %s\n", obj$prob)
)
}
answer <- random_number_generator(n = 10, distribution = "Binomial", size = 15, prob = 0.4)
summary(answer)
#
# Sample size: 10
# Mean: 5.5
# Standard Deviation: 1.64991582276861
# Distribution: Binomial
# Size: 15
# Probability: 0.4
Итак, чтобы вернуть дополнительную информацию, нам нужно сохранить эту дополнительную информацию в качестве вывода из random_number_generator
, что я сделал с
out <- list(x = x, distribution = distribution, size = size, prob = prob)
class(out) <- "MyClass"