我有一些向量 x
的函数f
R中的函数写为:
f <- function(x){#insert some function of x here}
我想返回(-f),它表示函数的负数。如果函数本身是事先已知的,这是一个简单的练习。
但是,在这种情况下,我不知道此功能是什么
有人可以帮我提供R代码吗? (输出必须是向量x中的一个函数。)
一个例子是-f(x)= x + 1,然后-f(x)= -x-1
谢谢!
答案 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