我有一个简单的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=3
和n=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中编写这样一个函数?
4条答案
按热度按时间zf2sa74q1#
在另一篇文章中使用accepted answer,只需使用
Reduce
来创建组合g
。slsn1g292#
你可以写一个helper函数,如下所示:
那么,比如说
当然,您可以修改上面的代码,使向量以
f(s)
而不是s
开始。mo49yndu3#
你也可以像下面这样调整你的原始函数:
6uxekuva4#
如果您向
f
添加一个“junk”参数,Reduce
将执行此操作。如果您只需要最后一个结果集accumulate = F
,或者只是从函数中删除accumulate
参数purrr