如何生成一系列R中几何级数的数字?例如,我需要生成序列: 1,2,4,8,16,32等......直到说有限值?
答案 0 :(得分:7)
这就是我要做的事情:
geomSeries <- function(base, max) {
base^(0:floor(log(max, base)))
}
geomSeries(base=2, max=2000)
# [1] 1 2 4 8 16 32 64 128 256 512 1024
geomSeries(3, 100)
# [1] 1 3 9 27 81
答案 1 :(得分:6)
为什么不输入2 ^(0:n)?例如。 2 ^(0:5)让你从1到32,依此类推。 通过分配如下变量来捕获向量: x < - 2 ^(0:5)
答案 2 :(得分:4)
您可以使用此数学函数在几何序列中找到任何术语:
term = start * ratio **(n-1)
其中:
term =您想要的序列中的术语
start =序列中的第一项
ratio =公共比率(即定义序列的倍数)
n =您想要的序列中的术语编号
使用此信息,在R中编写一个函数,为任何开始和比率提供几何序列的任何子集:
#begin = beginning of subset
#end = end of subset
geomSeq <- function(start,ratio,begin,end){
begin=begin-1
end=end-1
start*ratio**(begin:end)
}
geomSeq(1, 2, 1, 10)
# [1] 1 2 4 8 16 32 64 128 256 512
geomSeq(10,3,1,8)
# [1] 10 30 90 270 810 2430 7290 21870
geomSeq(10,3,4,8)
# [1] 270 810 2430 7290 21870