Прокрутка вектора векторов
Когда я петлю через вектор векторов, результатом каждого цикла является несколько векторов. Я ожидаю, что результат каждого цикла будет вектором. См. Следующий пример:
> 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 вектора)?
Ответы
Ответ 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)
.
Нет такой вещи (действительно) как вектора векторов.