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 - 修改未知函数的主要内容,如果未能解决你的问题,请参考以下文章