R:如何从向量中获取元素到新向量的特定位置

时间:2014-04-10 01:08:23

标签: r vector sequences

我使用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

有没有人不知道为什么我的循环不适用于这种情况?

当然,这只是我用非常大的数据集做的一个非常简单的例子。

谢谢!

2 个答案:

答案 0 :(得分:0)

我相信你的问题是因为你使用你的代码行将奇数(甚至在第二个循环中)的项目添加到总数中的相同位置:

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创建了一系列值,我在这里用它来识别从奇数和偶数中插入值的位置。

答案 1 :(得分:0)

你的循环错了。正如斯科特所提到的,对于odd[j]的所有值,您将j插入到相同的位置。如果你坚持使用for循环,那么如果你这样做就可以得到你想要的东西:

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

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