我正在寻找一个用于虚拟引用类的生成器函数,如果不提供参数,它将创建正确类的空对象。
#' Class SummaryData
#'
#' @description Odd class facilitating creation of data frame with
#' summary information attached.
#'
#' @slot data data.frame.
#' @slot summary_columns character.
#' @slot info character.
#'
#' @return A SummaryData Class
#' @import methods
#' @exportClass SummaryData
#'
setClass(
Class = "SummaryData",
slots = list(
data = "data.frame",
summary_columns = "character",
info = "character"
)
)
#' Constructor method of SummaryData.
#'
#' @name SummaryData
#' @rdname SummaryData-class
setMethod("initialize", "SummaryData", function(.Object,
data = "data.frame",
summary_columns = "character",
info = "character",
...)
{
if (missing(data)) {
data <- data.frame()
}
if (missing(summary_columns)) {
summary_columns <- character()
}
if (missing(comment(info))) {
info <- character()
}
validObject(.Object)
return(.Object)
})
#' Wrapper function SummaryData.
#'
#' @name SummaryData
#' @rdname SummaryData-class
#' @export
SummaryData <- function(...) new("SummaryData", ...)
SummaryData(data = mtcars, summary_columns = c("cyl", "mpg"), info = "Cars data")
给出此错误:
缺少(comment(info))错误:无效使用'missing'
SummaryData(数据= mtcars,summary_columns = c(“ cyl”,“ mpg”))
缺少错误(comment(info)):无效使用'missing'
第二个调用应使用空的SummaryData
字符串创建info
对象。
答案 0 :(得分:1)
尝试使用missing("data")
或do.call(missing, list("data"))
代替missing(data)
。他们俩都应该工作。
但是,您不能将其与comment(info)
一起使用,因为missing
仅接受参数名称,但是comment
宁愿返回NULL
。我想,只要将参数提供给函数调用,就不会丢失它。因此,您需要先检查参数info
,然后再执行所需的操作。
希望这会有所帮助。