R - 修改未知函数

问题描述 投票:0回答:2

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

有人可以帮我用R代码来实现吗? (输出需要是向量x中的函数。)

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

谢谢!

r function
2个回答
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

0
投票

查看do.call()。你可以给它一个函数名称的字符串作为一个争论,然后用你提供的参数(在list()中)调用该函数,例如,你可以这样做:

funcname<-"mean" 
dat<-1:5
do.call(funcname, list(dat))*(-1)

就像你打电话给mean(dat)*(-1)一样,这会给你:

[1] -3
© www.soinside.com 2019 - 2024. All rights reserved.