Подтвердить что ты не робот

Прокрутка вектора векторов

Когда я петлю через вектор векторов, результатом каждого цикла является несколько векторов. Я ожидаю, что результат каждого цикла будет вектором. См. Следующий пример:

> 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 вектора)?

4b9b3361

Ответ 1

Посмотрите, что 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

Другими словами, сформируйте список векторов, а не комбинацию векторов.

Ответ 2

Замените vects <- list(foo,bar,baz) на vects <- c(foo,bar,baz).

Нет такой вещи (действительно) как вектора векторов.