15

如何在 R 中生成几何级数中的数字序列?例如,我需要生成序列:1、2、4、8、16、32 等等......直到说一个有限值?

4

3 回答 3

10

这是我要做的:

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
于 2012-06-19T05:37:15.063 回答
7

为什么不直接输入 2^(0:n)?例如 2^(0:5) 让你从 1 到 32 等等。通过分配给如下变量来捕获向量:x <- 2^(0:5)

于 2012-06-19T05:32:04.853 回答
4

您可以使用此数学函数找到几何序列中的任何项:

术语 = 开始 * 比率 ** (n-1)

其中:

term = 您想要
开始的序列中的项 = 序列中的第一项
比率 = 共同比率(即定义序列的倍数)
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

更多关于几何序列

于 2014-10-31T19:34:39.877 回答