循环通过矢量矢量

时间:2012-09-19 22:42:33

标签: r vector for-loop loops

当我遍历向量向量时,每个循环的结果是几个向量。我希望每个循环的结果都是一个向量。请参阅以下示例:

foo <- seq(from=1, to=5, by=1)
bar <- seq(from=6, to=10, by=1)
baz <- seq(from=11, to=15, by=1)
vects <- c(foo,bar,baz)
for(v in vects) {print(v)}

# [1] 1
# [1] 2
# [1] 3
# [1] 4
# [1] 5
# [1] 6
# [1] 7
# [1] 8
# [1] 9
# [1] 10
# [1] 11
# [1] 12
# [1] 13
# [1] 14
# [1] 15

这是奇怪的,因为我期望给定它的三个向量(应该)在给定向量c(foo,bar,baz)的情况下迭代三次。类似的东西:

# [1]  1  2  3  4  5
# [1]  6  7  8  9 10
# [1] 11 12 13 14 15

任何人都可以解释为什么我得到这个结果(15个向量)以及如何实现我正在寻找的结果(3个向量)?

2 个答案:

答案 0 :(得分:15)

查看vects是什么:

> vects
 [1]  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15

c()连接(在这种情况下)三个向量,将它们连接成一个向量。在for()循环中,v依次获取vects中的每个值并打印出来,因此您看到了结果。

你想要一个三个独立载体的列表吗?如果是的话

> vects2 <- list(foo, bar, baz)
> for(v in vects2) {print(v)}
[1] 1 2 3 4 5
[1]  6  7  8  9 10
[1] 11 12 13 14 15

换句话说,形成一个向量列表,而不是向量的组合。

答案 1 :(得分:2)

vects <- list(foo,bar,baz)替换为vects <- c(foo,bar,baz)

没有这样的东西(真的)作为向量的向量。