我创建了一个用于打印对象名称的 S3 方法:
printc = function(...) {
UseMethod("printc")
}
#' @export add_dataset.data.frame
printc.data.frame = function(...){
xs <- rlang::quos(..., .named = TRUE)
return(rlang::names2(xs))
}
有两种称呼方式:
b <- printc(iris)
c <- printc.data.frame(iris)
结果b是
<df[,5]>
,而不是c:iris
,有人知道原因吗?我怎样才能使 S3 方法生成像“iris”这样的结果?
当我试图弄清楚 S3 是如何调度这个方法时,
sloop::s3_dispatch(printc(iris))
,它确实派遣到printc.data.frame
?我认为这可能与环境有关。