Как сделать вектор, используя цикл for

Я очень новичок в R (и вообще программировании), и я застрял в этом (возможно, очень легком) вопросе на несколько дней...

Как сделать вектор 3 6 12 24 48 96 192 384 768 контуром for?

Все, что мне удалось найти до сих пор, это что-то вроде:

x=numeric()
for (i in 1:8) (x=2*i[-1])

Однако это не работает. Я думаю, что одна из основных проблем заключается в том, что я не понимаю, как индексировать числа в последовательности.

Если кто-то может указать мне в правильном направлении, это было бы большой помощью!

Ответ 1

x=c()
x[1] = 3
for (i in 2:9) { 
    x[i]=2*x[i-1]
}

Ответ 2

Хорошо, первое, что вам нужно знать, - это добавить вещи к вектору. Достаточно легко выполнить нужную функцию append:

x <- c(1, 2)
x <- append(x, 3)

сделает вектор x содержащим (1, 2, 3) так же, как если бы вы сделали x <- (1, 2, 3). Следующее, что вам нужно понять, это то, что каждый член вашего целевого вектора вдвое больше предыдущего, это легко сделать в цикле for

n <- 1
for (i in 1:8)
{
    n <- n*2
}

будет иметь n удвоить каждый цикл. Очевидно, вы можете использовать его в своей удвоенной или еще не удвоенной форме, разместив свои другие заявления до или после инструкции n <- n*2.

Надеюсь, вы можете объединить эти две вещи, чтобы сделать цикл, который вам нужен.

Ответ 3

Действительно, ребята. Придерживайтесь решения, скрывающегося в комментарии Аруна.

Rgames> 3*2^(0:20)
 [1]       3       6      12      24      48      96     192     384     768
[10]    1536    3072    6144   12288   24576   49152   98304  196608  393216
[19]  786432 1572864 3145728