我想生成例如6个数字的序列(以R表示),其中每个数字是前一个数字除以2,例如4、2、1、1、0.5、0.25、0.125。
我尝试过seq(4, 6, 0.5)
但这会增加0.5,而不是乘以。有没有办法使用seq()命令来做到这一点?
谢谢!
您可以做
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)
我们可以按照以下步骤进行
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