簡體   English   中英

如何使用for循環制作向量

[英]How to make a vector using a for loop

我對 R(以及一般的編程)非常陌生,幾天來我一直被困在這個(可能很簡單)的問題上......

如何使用for循環制作向量3 6 12 24 48 96 192 384 768

到目前為止,我設法想出的只是以下內容:

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語句之前或之后,以加倍或尚未加倍的形式使用它。

希望您可以將這兩件事放在一起來制作您想要的循環。

真的,伙計們。 堅持隱藏在 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

sapply(1:9, function(i) 3*2**(i-1) )

你可以,如果你知道 python 使用包 reticulate 來做到這一點,這比在 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,而且它比 r 更復雜,但對我個人而言,我發現 python 比 r 更容易操作向量(或列表,python 等價物)。 我希望這能回答你的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM