はじめに、S言語の特徴をいくつかの演算例で示しましょう。
> 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
> 3:-3
[1] 3 2 1 0 -1 -2 -3
> yy <- 3:-3
> yy
[1] 3 2 1 0 -1 -2 -3
> xx <- c(68,66,55)
> yy <- c("国語","数学","英語")
> xx
[1] 68 66 55
> yy
[1] "国語" "数学" "英語"
> xx[3]
[1] "55"
> yy[3]
[1] "英語"
> 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 |
> 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 |
> 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 |
> 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