【发布时间】:2020-07-10 13:58:01
【问题描述】:
我正在尝试生成一个单位小于 1 的序列,但我无法获得该序列的正确数字。可重现的代码如下所示:
> stock=3 # initial value
> inflow=0.4
> outflow=0.25
> unit=1/8
> stock=stock+(inflow-outflow)*stock
> for (i in seq(1,10,by=unit)) stock[i+1]=stock[i]+(inflow-outflow)*stock[i]
> stock
[1] 3.450000 3.967500 4.562625 5.247019 6.034072 6.939182 7.980060 9.177069 10.553629
[10] 12.136673 13.957174
> length(stock)
[1] 11
> seq(1,10,by=unit)
[1] 1.000 1.125 1.250 1.375 1.500 1.625 1.750 1.875 2.000 2.125 2.250 2.375 2.500 2.625
[15] 2.750 2.875 3.000 3.125 3.250 3.375 3.500 3.625 3.750 3.875 4.000 4.125 4.250 4.375
[29] 4.500 4.625 4.750 4.875 5.000 5.125 5.250 5.375 5.500 5.625 5.750 5.875 6.000 6.125
[43] 6.250 6.375 6.500 6.625 6.750 6.875 7.000 7.125 7.250 7.375 7.500 7.625 7.750 7.875
[57] 8.000 8.125 8.250 8.375 8.500 8.625 8.750 8.875 9.000 9.125 9.250 9.375 9.500 9.625
[71] 9.750 9.875 10.000
> length(seq(1,10,by=unit))
[1] 73
stock 的预期输出长度应为 73,与序列的长度相同。现在我有 3.450000 3.967500 4.562625 ... 13.957174 的数字是正确的但不完整,在数字 13.957174 之后应该还有 62 个值。任何想法?非常感谢。
【问题讨论】:
-
你想做什么?您是否尝试生成 1 到 10 x 0.125 之间的序列并期望特定长度?
-
是的,没错,但从我得到的信息看来,我只得到了序列的一部分......
-
您可以指定
by或length,out之一。seq(1,10, by = 1/8)或seq(1,10, length.out = 100) -
这段代码没有完成这项工作:for (i in seq(1,10,by=1/8)) stock[i+1]=stock[i]+(inflow-outflow) *库存[i]。你是什么意思?你能说得更具体点吗?
-
你能显示你的预期输出吗?