有没有办法在 R 中动态强制对象?
背景 我正在尝试为摘要创建一个函数工厂,它可以根据传递的对象的类返回特定的方法。特别是,这是针对http://adv-r.had.co.nz/Functional-programming.html#lists-of-functions中的问题之一
实现一个类似于 base::summary() 的汇总函数,但使用函数列表。修改该函数,使其返回一个闭包,从而可以将其用作函数工厂。
例如,我尝试了一些变体,所有这些变体都是不正确/不完整的。
object.list = list(df = data.frame(),fr=factor(), mx = matrix())
summary.new = function(y){
function(x,...){
UseMethod(summary,x)
}
}
summary.new.list = lapply(object.list, summary.new)
我想知道是否有一种方法可以动态地强制一个对象——比如 as.() 并使用它从通用对象返回适当的方法。
summary.new.list 函数
> summary.new.list
$df
function (x, ...)
{
UseMethod("summary", x)
}
<environment: 0x108b5edc>
$fr
function (x, ...)
{
UseMethod("summary", x)
}
<environment: 0x108b5de0>
$mx
function (x, ...)
{
UseMethod("summary", x)
}
<environment: 0x108b5ce4>
我想根据对象调用函数,例如。对于我想调用的数据框summary.new.list$df(data.frame(1:12,3,4))
。虽然它现在可以工作,因为 $df 函数仍然是通用的 - 我希望从那里调用基本的 summary.data.frame 函数而不是 UseMethod