[英]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.