Как мне сгенерировать последовательность чисел, разделенных на константу? - PullRequest
1 голос
/ 30 января 2020

Я хочу сгенерировать последовательность (в R), например, из 6 чисел, где каждое число - это предыдущее число, разделенное на 2, например 4, 2, 1, 0,5, 0,25, 0,125.

Я пытался seq(4, 6, 0.5), но это добавляет 0,5, а не умножить на. Есть ли способ сделать это с помощью команды seq ()?

Спасибо!

Ответы [ 2 ]

2 голосов
/ 30 января 2020

Мы можем сделать шаг как

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 l oop

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
2 голосов
/ 30 января 2020

Вы можете сделать

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)
...