Ответ 1
x=c()
x[1] = 3
for (i in 2:9) {
x[i]=2*x[i-1]
}
Я очень новичок в R (и вообще программировании), и я застрял в этом (возможно, очень легком) вопросе на несколько дней...
Как сделать вектор 3 6 12 24 48 96 192 384 768
контуром for
?
Все, что мне удалось найти до сих пор, это что-то вроде:
x=numeric()
for (i in 1:8) (x=2*i[-1])
Однако это не работает. Я думаю, что одна из основных проблем заключается в том, что я не понимаю, как индексировать числа в последовательности.
Если кто-то может указать мне в правильном направлении, это было бы большой помощью!
x=c()
x[1] = 3
for (i in 2:9) {
x[i]=2*x[i-1]
}
Хорошо, первое, что вам нужно знать, - это добавить вещи к вектору. Достаточно легко выполнить нужную функцию 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
.
Надеюсь, вы можете объединить эти две вещи, чтобы сделать цикл, который вам нужен.
Действительно, ребята. Придерживайтесь решения, скрывающегося в комментарии Аруна.
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