【发布时间】:2014-11-16 16:02:23
【问题描述】:
至少目前,这对我来说是一个学习练习,因此实际功能或其复杂性不是问题。假设我编写了一个函数,其参数列表包括一些输入变量和函数名,作为字符串传递。然后这个函数在内部计算一些变量并“决定”如何将它们提供给我传入的函数名。
对于非原始函数,我可以这样做(对于这个例子,假设我的 funcname 函数没有任何参数,最多 (x,y,z) 除外。如果他们这样做,我必须编写一些代码来搜索匹配names(formals(get(funcname)))以免删除其他参数):
foo <- function (a,b,funcname) {
x <- 2*a
y <- a+3*b
z <- -b
formals(get(funcname)) <- list(x=x, y=y, z=z)
bar <- get(funcname)()
return(bar)
}
而且好消息是,即使函数 funcname 不会使用 x、y 或 z,它也会毫无错误地执行(只要没有其他 args 不使用) t 有默认值)。
“原始”函数的问题是我不知道有什么方法可以找到或修改它们的形式。除了编写包装器之外,例如foosin <-function(x) sin(x),有没有办法设置我的foo 函数以使用原始和非原始函数名称作为输入参数?
【问题讨论】:
标签: r