遵循R中的模式的函数的向量

时间:2015-11-08 20:30:57

标签: r

我有一个R问题。我想制作遵循模式的向量函数,在这种情况下如何创建像v=(1/(x+1) , 1/(x+2), 1/(x+3),....,1/(x+n))这样的向量并独立使用每个函数,例如,第一个函数的值是向量v的第一个组件,已计算在3。

这应该显示1 /(3 + 1)= 1/4

注意向量分量:1 /(x + i),i = 1,...,n

如何创建" for" loop v =(f1,f2,... fn),fn = 1 /(x + i) 然后能够调用其中一个函数?

有什么建议吗?

2 个答案:

答案 0 :(得分:2)

创建一个列表以将函数存储在:

> v=list()

创建一个函数生成器(你必须在这里使用force):

> makef=function(i){force(i);function(x){1/(x+i)}}

填写清单:

> for(i in 1:6){v[[i]]=makef(i)}

这样称呼它:

> v[[1]](1)   
[1] 0.5     # 1/(1+1)
> v[[2]](1)
[1] 0.3333333   # 1/(2+1)

答案 1 :(得分:0)

在R中,您可以将序列添加到常量并获得紧凑的代码。

 cont_fract <- function(x, length) { 1/(x+1:length) }

 cont_fract(3, 10)
#-----------
 [1] 0.25000 0.20000 0.16667 0.14286 0.12500 0.11111 0.10000
 [8] 0.09091 0.08333 0.07692

Josh的评论将适用于此:如果仅以交互方式进行此操作,则可以使用1/(3+1:10)。 For循环在R中是不可取的,因为它们往往会妨碍思考和#34;矢量&#34;这是一种在提高性能方面付出额外努力的策略。