我有一个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) 然后能够调用其中一个函数?
有什么建议吗?
答案 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;这是一种在提高性能方面付出额外努力的策略。