我对R(以及一般的编程)非常陌生,并且我已经坚持这个(可能非常简单)问题几天......
如何使用3 6 12 24 48 96 192 384 768
循环生成向量for
?
到目前为止,我设法提出的所有内容都是:
x=numeric()
for (i in 1:8) (x=2*i[-1])
然而,这不起作用。我认为其中一个主要问题是我不明白如何索引序列中的数字。
如果有人能指出我正确的方向,那将会是一个很大的帮助!
答案 0 :(得分:17)
好的,你需要知道的第一件事是如何将东西附加到矢量。您想要的功能很简单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*2
语句之前或之后放置其他语句,将其用于加倍或未加倍的形式。
希望你可以把这两件事放在一起,制作你想要的循环。
答案 1 :(得分:15)
x=c()
x[1] = 3
for (i in 2:9) {
x[i]=2*x[i-1]
}
答案 2 :(得分:3)
真的,伙计们。坚持隐藏在Arun评论中的解决方案。
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
答案 3 :(得分:0)
sapply(1:9,function(i)3 * 2 **(i-1))
答案 4 :(得分:0)
如果您知道python,则可以使用网状软件包来完成此操作,这比r中的操作要简单得多(这是我执行类似任务的方式)。
如果没有包装,请这样做:
install.packages('reticulate')
然后,如果可以,你可以做
library('reticulate')
py_run_string('vector = [n*2 for n in range(1, 9, 1)']
#Then you can call the vector by:
print(py$vector)
#And do whatever you want with it.
我知道这比r多了python,使它变得比原来复杂了一些,但对我个人而言,我发现python在操纵向量(或列表,等效于python)方面比r更容易。我希望这能回答您的问题。