我使用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
有没有人不知道为什么我的循环不适用于这种情况?
当然,这只是我用非常大的数据集做的一个非常简单的例子。
谢谢!
答案 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]
}
其他人提供的方法不使用循环,更可取。