r - 循环遍历向量的向量

标签 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 个向量)?

最佳答案

看什么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

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

关于r - 循环遍历向量的向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12503901/

相关文章:

r - lm预测不会预测

c++ - Vector3 矩阵乘法

C语言的邻居查找程序代码

python - 通过与第二个列表比较从列表中删除项目,Python

r - (在 R 中)为什么使用用户定义的线性内核的 ksvm 的结果与使用 "vanilladot"的 ksvm 的结果不同?

r - 如何从混合效果中提取随机截距 Tidymodels

r - 使用 optim、ML 将 Gamma 分布拟合到 R 中的数据

vector - 向量中元素出现的次数 [JULIA]

c++ - 在循环内检查 std::vector 大小的正确方法

c - c编程中的结构和循环问题