小编Bor*_*roy的帖子

存储在对象中时保留函数名称

我正在准备一个包,用户必须将函数及其关联的参数存储在 a 中list以供以后使用。这是其工作原理的典型示例:

准备包含函数名称和参数的列表

parameters <- list(a1 = list(fun = dnorm,
                             args = list(mean = 150, sd = 100)),
                   a2 = list(fun = dpois,
                             args = list(lambda = 40)))
Run Code Online (Sandbox Code Playgroud)

以下是如何在其他函数中使用此参数对象的示例:

x <- 1:100
myfunction <- function(x, var, parameters)
{
    results <- list(var = var,
                    y = do.call(parameters[[var]]$fun, 
                                c(list(x), parameters[[var]]$args)),
                    parameters = parameters)
    class(results) <- "customclass"
    return(results)
}
myfunction(x, "a1", parameters)
Run Code Online (Sandbox Code Playgroud)

parameters现在假设我想打印存储在的输出中的函数的名称myfunction

print.customclass <- function(X)
{
   cat("Function name:", X$parameters[[X$var]]$fun)
}
Run Code Online (Sandbox Code Playgroud)

此自定义打印将不起作用:

> myfunction(x, "a1", parameters)
Error …
Run Code Online (Sandbox Code Playgroud)

r

3
推荐指数
1
解决办法
581
查看次数

标签 统计

r ×1