R-修改未知函数

时间:2018-11-24 00:07:03

标签: r function

我有一些向量 x
的函数f R中的函数写为:
 f <- function(x){#insert some function of x here}
我想返回(-f),它表示函数的负数。如果函数本身是事先已知的,这是一个简单的练习。
但是,在这种情况下,我不知道此功能是什么

有人可以帮我提供R代码吗? (输出必须是向量x中的一个函数。)

一个例子是-f(x)= x + 1,然后-f(x)= -x-1

谢谢!

2 个答案:

答案 0 :(得分:0)

查看do.call()。您可以为它提供一个函数名称的字符串作为争论,然后该函数将使用您提供的参数(在String[]中进行调用,例如,您可以这样做:

list()

将像您致电funcname<-"mean" dat<-1:5 do.call(funcname, list(dat))*(-1) 一样运行,它将为您提供:

mean(dat)*(-1)

答案 1 :(得分:0)

以下函数getNegFn()接受函数fn并返回一个函数,该函数返回fn的负返回值:

getNegFn <- function(fn){
    fnOut <- function(){
        - do.call(what=fn, args=as.list(match.call())[-1])
    }
    formals(fnOut) <- formals(fn)
    fnOut
}

一个例子:

fn <- function(x) x + 1
nFn <- getNegFn(fn=fn)

fn(1)
[1] 2
nFn(1)
[1] -2

如果输入函数具有...自变量,也可以工作:

fn2 <- function(x, ...) x + sum(unlist(list(...)))
nFn2 <- getNegFn(fn=fn2)

fn2(x=1, y=2)
[1] 3
nFn2(x=1, y=2)
[1] -3