裏 RjpWiki

Julia ときどき R, Python によるコンピュータプログラム,コンピュータ・サイエンス,統計学

添え字をベクトルで指定するだけ

2012年06月12日 | ブログラミング

2012-06-12 ベクトルの要素にベクトル」で不思議がっているが??

「R では,ベクトルの添え字はベクトルで与えることができる。また,同じ要素を何回も重複して取り出すこともできるし,重複を許すからもとの要素数より多くの要素数を取り出すこともできる。」ということだが,どこが不思議なのかわからない。

> x <- 11:15
> x[3]
[1] 13
> x[c(3, 3, 1)]
[1] 13 13 11
> i <- c(2, 3, 1, 2, 4, 5, 4, 2, 2, 1)
> x[i]
 [1] 12 13 11 12 14 15 14 12 12 11

? "[" を見れば,"When indexing arrays by [ a single argument i can be a matrix with as many columns as there are dimensions of x; the result is then a vector with elements corresponding to the sets of indices in each row of i." と書いてある。

だから,行列の場合は行・列を示す2つの数値を二列に持つ行列で,行列の要素を取り出すことができるのである。

> (x <- matrix(11:22, 3, 4))
     [,1] [,2] [,3] [,4]
[1,]   11   14   17   20
[2,]   12   15   18   21
[3,]   13   16   19   22
> (ij <- matrix(c(1,3, 2,4, 3,2, 3,4), byrow=TRUE, nc=2))
     [,1] [,2]
[1,]    1    3
[2,]    2    4
[3,]    3    2
[4,]    3    4
> x[ij]
[1] 17 21 16 22

3次元配列では,行・列・層を表す3つの数値を3列に持つ行列で,配列の要素を取り出すことができるのである。

> (x <- array(11:34, dim=c(2, 3, 4)))
, , 1

     [,1] [,2] [,3]
[1,]   11   13   15
[2,]   12   14   16

, , 2

     [,1] [,2] [,3]
[1,]   17   19   21
[2,]   18   20   22

, , 3

     [,1] [,2] [,3]
[1,]   23   25   27
[2,]   24   26   28

, , 4

     [,1] [,2] [,3]
[1,]   29   31   33
[2,]   30   32   34

> (ijk <- matrix(c(1,3,2, 2,1,4, 2,2,2, 2,3,1), byrow=TRUE, ncol=3))
     [,1] [,2] [,3]
[1,]    1    3    2 # i=1, j=3, k=2 で,対応する要素x[1,3,2] の21が取り出されるということ
[2,]    2    1    4
[3,]    2    2    2
[4,]    2    3    1
> x[ijk]
[1] 21 30 20 16

全ては,help に書いてある。

コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« ダメ出し:繰り返しをそのま... | トップ | こんなところに計算誤差があ... »
最新の画像もっと見る

コメントを投稿

ブログラミング」カテゴリの最新記事