簡體   English   中英

R:如何將向量中的元素放入新向量的特定位置

[英]R: how to get elements from a vector into specific positions of a new vector

我正在使用R,並且具有以下向量:

odd<- c(1,3,5,7,9,11,13,15,17,19)
even<- c(2,4,6,8,10,12,14,16,18,20)

我想將偶數和奇數結合起來,這樣我就可以得到一個帶有以下元素的向量(假設它將被命名為total)

> total
1,2,3,4,5,6,7,8,9,10...,20.

我試過循環為:

total<- c(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0) #20 elements

for (i in seq(from=1, to=20, by=2)) 
  for (j in seq(from=1, to=10, by=1))
     total[i]<- odd[j]


for (i in seq(from=2, to=20, by=2)) 
      for (j in seq(from=1, to=10, by=1))
         total[i]<- even[j]

但是由於某種原因,這是行不通的。 我得到這個向量

>total
17 20 17 20 17 20 17 20 17 20 17 20 17 20 17 20 17 20 19 20

沒有人不為什么我的循環不適用於這種情況嗎?

當然,這只是一個非常簡單的示例,說明了我如何處理非常大的數據集。

謝謝!

我相信您的問題是因為您使用代碼行將奇數(甚至在第二個循環中)項添加到總數中的相同位置:

total[i]<- odd[j]

試試這個

odd<- c(1,3,5,7,9,11,13,15,17,19)
even<- c(2,4,6,8,10,12,14,16,18,20)

elements = 20
total<- rep(x=0, times=elements) #20 elements

total[seq(from=1, to=length(total), by=2)] = odd
total[seq(from=2, to=length(total), by=2)] = even
total

[1]  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20

seq創建了一個值序列,我在這里用它來標識從奇數和偶數插入值的位置。

您的循環是錯誤的。 正如Scott所提到的,對於j所有值,您將odd[j]總共插入同一位置。 如果您堅持使用for循環,那么如果您這樣做就可以得到所需的結果:

for (j in seq(from=1, to=10, by=1)) {
    total[2*j-1]<- odd[j]
    total[2*j] <- even[j]
}

其他人提供的方法不使用循環,因此更可取。

暫無
暫無

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

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