[株式会社 NTTデータ数理システム]

第1章 S-PLUSの概要


1.4 演算式

はじめに、S言語の特徴をいくつかの演算例で示しましょう。

(1) 演算子

(i) 3から12までの公差が1の等差数列を作る。

> 3:12
[1] 3 4 5 6 7 8 9 10 11 12
> xx <- 3:12
> xx
[1] 3 4 5 6 7 8 9 10 11 12

(ii) 3から‐3までの公差が‐1の等差数列を作る。

> 3:-3
[1] 3 2 1 0 -1 -2 -3
> yy <- 3:-3
> yy
[1] 3 2 1 0 -1 -2 -3

(2) ベクトル

(i) 2つのベクトルxとyを定義する。

> xx <- c(68,66,55)
> yy <- c("国語","数学","英語")
> xx
[1] 68 66 55
> yy
[1] "国語" "数学" "英語"

(ii) ベクトル要素の取り出し

> xx[3]
[1] "55"
> yy[3]
[1] "英語"

(3) 行列

(i) 1から20までの数字を4行5列にする。

> matrix(1:20,4,5)

[,1] [,2] [,3] [,4] [,5]
[1,] 1 5 9 13 17
[2,] 2 6 10 14 18
[3,] 3 7 11 15 19
[4,] 4 8 12 16 20
(ii) 上記の行列をオブジェクト名aaの行列に代入(付値)し、その転置行列を求めて行列bbに付値する。

> aa <- matrix(1:20,4,5)
# 行列の作成

> bb <- t(aa)
# 転置

> bb

[,1] [,2] [,3] [,4]
[1,] 1 2 3 4
[2,] 5 6 7 8
[3,] 9 10 11 12
[4,] 13 14 15 16
[5,] 17 18 19 20
(iii)上記行列aa、bbの行列積を求めて行列abに付値する。

> ab <- aa %*% bb `
> ab

[,1] [,2] [,3] [,4]
[1,] 565 610 655 700
[2,] 610 660 710 760
[3,] 655 710 765 820
[4,] 700 760 820 880
(iv) 行列abを100で割ってabに付値する。

> ab <- ab/100
> ab

[,1] [,2] [,3] [,4]
[1,] 5.65 6.1 6.55 7.0
[2,] 6.10 6.6 7.10 7.6
[3,] 6.55 7.1 7.65 8.2
[4,] 7.00 7.6 8.20 8.8

(v) 行列abの固有値、固有ベクトルを求める。

> eigen(ab)
$values
# 固有値
[1] 2.864414e+003 5.585784e+000 8.714195e-014 -3.315622e-013
$vectors
# 固有ベクトル

[,1] [,2] [,3] [,4]
[1,] 0.4430188 -0.7097424 0.34163008 -0.4281225
[2,] 0.4798725 -0.2640499 -0.77461046 0.3161940
[3,] 0.5167262 0.1816426 0.52433067 0.6519796
[4,] 0.5535799 0.6273351 -0.09135029 -0.5400510

(4) グラフ

回帰直線の例

> x
# xの値を表示
> y
# yの値を表示
> win.graph()
# グラフィック・デバイスを起動
> plot(x,y)
# 散布図を描く
> points(x,y,pch="*")
# 点を見やすくする
> abline(lsfit(x,y))
# 最小2乗法による回帰直線を描く
> graphics.off()
# グラフィック・デバイスを閉じる
> q()
# S-PLUSを閉じる

次のページへ進む 前のページへ戻る 目次へ

(C) 中村 健二郎 1997

----------------------------------------------------------------

ご感想の宛先は、株式会社 NTTデータ数理システム《S-PLUS》グループ <splus-info@ml.msi.co.jp>