R - 修改未知函数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了R - 修改未知函数相关的知识,希望对你有一定的参考价值。

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

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

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

谢谢!

答案

以下函数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
另一答案

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

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

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

[1] -3

以上是关于R - 修改未知函数的主要内容,如果未能解决你的问题,请参考以下文章

css常用代码片段 (更新中)

如何将 r ggplot 图存储为 html 代码片段

关于代码片段的时间复杂度

Android:应用程序由于未知原因而崩溃

r R有用的代码片段

r R有用的代码片段