16

ベクトルのベクトルをループすると、各ループの結果はいくつかのベクトルになります。各ループの結果はベクトルになると思います。次の例を参照してください。

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

これは奇妙なことです。なぜなら、与えられた3つのベクトルが、与えられたベクトルで3回繰り返されると期待するからc(foo,bar,baz)です。何かのようなもの:

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

なぜ私がこの結果(15ベクトル)を取得しているのか、そして私が探している結果(3ベクトル)を達成する方法を誰かが説明できますか?

4

2 に答える 2

20

何であるかを見てくださいvects

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

3つのベクトルを結合し(このc()場合)、それらを1つのベクトルに連結します。for()ループでは、v各値をvects順番に取得して出力するため、結果が表示されます。

3つの別々のベクトルのリストが必要ですか?もしそうなら

> 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

言い換えれば、ベクトルの組み合わせではなく、ベクトルのリストを作成します。

于 2012-09-19T22:46:45.883 に答える
3

の代わりvects <- list(foo,bar,baz)vects <- c(foo,bar,baz)

ベクトルのベクトルのようなものは(実際には)ありません。

于 2012-09-19T22:46:17.917 に答える