我如何生成一个数字序列除以一个常数?

问题描述 投票:1回答:2

我想生成例如6个数字的序列(以R表示),其中每个数字是前一个数字除以2,例如4、2、1、1、0.5、0.25、0.125。

我尝试过seq(4, 6, 0.5)但这会增加0.5,而不是乘以。有没有办法使用seq()命令来做到这一点?

谢谢!

r seq
2个回答
2
投票

您可以做

n <- 6
4/2^(0:n)
#[1] 4.0000 2.0000 1.0000 0.5000 0.2500 0.1250 0.0625

我们也可以使用Reduce

Reduce(function(x, y) x/2, rep(4, n), accumulate = TRUE)
#[1] 4.000 2.000 1.000 0.500 0.250 0.125

类似于purrr::accumulate

purrr::accumulate(rep(4, n), ~.x/2)

2
投票

我们可以按照以下步骤进行

4/2^(seq_len(6) - 1)
#[1] 4.000 2.000 1.000 0.500 0.250 0.125

或带有seq

4/2^(seq(0, 5, by = 1))

或使用for循环

v1 <- 4
for(i in 2:6) v1 <- c(v1, v1[i-1]/2)
v1
#[1] 4.000 2.000 1.000 0.500 0.250 0.125
© www.soinside.com 2019 - 2024. All rights reserved.