首页 > 解决方案 > R语言函数中的函数

问题描述

我在 R 语言中有一个简单的函数,例如:

f<-function(x){
y=(x+2)/3
return(y)
}

我想根据自己的输出对这个函数进行五次评估,即y1=f(x), y2=f(f(x)), y3=f(f(f(x))), y4=f(f(f(f(x)))), y5=f(f(f(f(f(x))))). 有没有更简单的方法以一个函数的形式来做,例如当第一个参数是x,第二个参数是评估次数时,有两个参数的函数,即n。例如,对于x=3n=5我想要一个函数f2<-(x=3,n=5),其输出将是向量或长度等于n值的列表的形式:

y1=f(3)=1.666667
y2=f(f(3))=1.222222
y3=f(f(f(3)))=1.074074
y4=f(f(f(f(3))))=1.024691
y5=f(f(f(f(f(3)))))=1.00823

如何在 R 中编写这样一个函数?

标签: rfunction

解决方案


使用另一篇文章中接受的答案,只需使用Reduce来创建作品,g.

composite <- function(g, h) {function(...)g(h(...))}
g <- Reduce(composite, list(f, f, f, f, f))

g(2)
f(f(f(f(f(2)))))

identical(g(2), f(f(f(f(f(2))))))
#[1] TRUE

推荐阅读