• 検索結果がありません。

2 R : R R [ 1.1] [ 2.1] R R R plot() contour() 2

N/A
N/A
Protected

Academic year: 2021

シェア "2 R : R R [ 1.1] [ 2.1] R R R plot() contour() 2"

Copied!
14
0
0

読み込み中.... (全文を見る)

全文

(1)

1

R

のインストール

for Windows

Rはさまざまなプラットフォーム上でのバージョンが用意されています。Windows や Mac OS X 上でのインストールは、インストーラをダウンロードしてきてダブルクリック、あとは指示に従う だけです。Linux ではパッケージマネージャを使えば勝手にダウンロードしてインストールしてく れることでしょう。本章では Windows 版のインストール方法をのせておきます。

1.1

インストール

インストールはインストーラを実行するだけです。

1.2

日本語化

新しいパソコンでは何もしないでも、勝手に日本語化するようです。 インストールが完了したら、デスクトップやスタートメニューから、R アイコンを選択して R を 起動させましょう。起動したら、cat(”やあ、せかい¥n”) とでも打ち込んでエンターを押してくだ さい。もし文字化けしているなら、R をインストールしたフォルダ→R-00.0(00.0 にはバージョン が入る)→etc フォルダ内の Rconsole ファイルをメモ帳で開いてください。font=TT Courier New と なっているところを font= TT MS Gothic 、points = 10 となっているところを  points = 14 として ください。

つぎに、同じフォルダ内の Rdevga ファイルをメモ帳で開いて、TT Arial をすべて TT MS Gothic に置き換えてください。R を再起動すると設定が反映されます。

まだ文字化けするなら、demo(Japanese) と打ち込んでみてください。

(2)

2

とりあえず使ってみる

Rはコンソール上で、コードを 1 行ずつ実行する、対話環境のスクリプト言語です。また、スク リプトを使えば、何行ものコードをまとめて実行してくれます。本章では簡単な計算とスクリプト を使ってグラフを書いてみましょう。

2.1

画面の説明

図 2.1: R でいろいろなコマンドを実行したところ。 Rを起動した直後は、[図 1.1] のように、コンソールだけが表示されています。このあといろい ろなコマンドを実行すると、[図 2.1] のように、さまざまなウィンドウが出てきます。それぞれの ウィンドウは、 Rコンソール 起動時から表示されている、R のメインウィンドウです。これを閉じると R は終了 してしまいます。 スクリプト ”ファイル→ 新しいスクリプト”、または、”スクリプトを開く”を実行すると表示され ます。ここに数行にわたるコードを打ち込み、いっきに実行することができます。実行すると きは、実行したい行を選択して、”右クリック→ 選択中のコードを実行”をクリックします。 グラフィックウィンドウ グラフを描く関数 plot()、contour() などを実行すると表示されます。それ ぞれのグラフィックウィンドウはグラフィックデバイスとしての番号が割り振られています。

(3)

2 とりあえず使ってみる 3Dグラフィックウィンドウ 3D グラフィック系のグラフを描く関数 surface3d() などを使いたいとき に、あらかじめ open3D() で表示させとくウィンドウです。2D グラフィックと違い surface3d() だけでは表示されません。 となっています。

2.2

簡単な計算

まずは、100 円ショップの電卓にもできる計算 >  1 + 1 を実行してみましょう。2 が返ってきます。次に関数電卓レベル >  sin( 31 / 432 ∗pi) 0.2235337が帰ってきたでしょうか?R は複素数も簡単に扱えます。 >  ( 3 + 2i ) ∗(5 + 9i) -3+37i が返ってきます。複素数を使うときはかならず数字のあとに i をつけてください。ベクトル をかけると >  c(1,2,3) ∗c(4,5,6) 4 10 18とそれぞれの要素をかけてできるベクトルが返ってきます。ここで、c() はベクトルを返す 関数です。テンソル積 abなんかも計算できます >  c(1,2,3) %o% c(4,5,6) 4 5 6 8 10 12 12 15 18 が返ってきます。つぎに、変数を使ってみましょう。変数への値の代入は >  x <- c(1,2,3) とやります。ここで、変数にベクトルを代入していますが、R はベクトル指向型言語なので、一般 に変数はベクトル型として扱われます。x の値を見たいときは >  x と x だけを打てば中身が表示されます。さいごに、sin カーブを描いて見ましょう。 >  x <- seq( 0 , 2 ∗pi , length = 100)

>  plot( sin( x ) , type = ”l” )

実行すると、グラフィックウィンドウが表示され、sin カーブが現れます。ここで seq() はベクトル を作る関数で、0∼2π までの要素数 100 個のベクトルを作っています。

>  x

とやると、0.00000000 0.06346652 0.12693304 0.19039955 0.25386607 0.31733259 0.38079911· · ·

(4)

2 とりあえず使ってみる

2.3

スクリプト

プログラミングは失敗して、失敗した行に戻って直して、また失敗して· · · 、の繰り返しです。 こんなとき、コンソールでいちいち上ボタンを押して戻るのは大変面倒です。また、長いプログラ ムなどを書くとコンソールでは何を書いているのかわからなくなってきます。 長いプログラムや何度もやり直したいプログラムは、スクリプトに書きましょう。 スクリプトは、上にも書いたように”ファイル→ 新しいスクリプト”で開きます。保存しておいた スクリプトは”ファイル→ スクリプトを開く”でひらきます。スクリプトファイルの拡張子は「.R」 にしておいてください。 スクリプトの実行は実行したい行を選択して、”右クリック→ 選択中のコードを実行”をクリッ クします。 Rのひとつの命令の終わりは改行です。また、「;」を使っても命令の終わりを宣言できます。私 はスクリプトを書くときは、改行の前であっても、なるべく「;」を使っても命令の終わりを宣言 するようにしています。 スクリプトを書いていてコメントを入れたいときには「#」をコメントの先頭に置きましょう。 すると、その行が終わるまではコメントとして読み込まれ実行時は無視されます。

2.4

グラフ

最後にスクリプトを使って等高線を書いて見ましょう。新しくスクリプトを開いてリスト 2.1 を 打ってください。ただし、番号は打たないでください。 リスト 2.1     1: 2: bunkatu<- 50 ;#大きいほど滑らか 3: hani<- 3 ;#描画する範囲 4: 5: #描画する複素平面の格子点を作る

6: x<- seq( - hani , hani , length = ( bunkatu + 1 ) ) ; 7: y<- x ;

8: z<- outer( x , y , function( a , b )a + b ∗1i ) ; 9: 10: #描画したい複素関数 11: w<- z ˜2 ; 12: 13: #不確定値を取り除く 14: w[ is.na( w ) ]<- 0 ; 15: 16: u<- Re( w ) ;#実部 17: v<- Im( w ) ;#虚部 18: 19: #描画

(5)

2 とりあえず使ってみる

20: contour( x , y , u )

21: contour( x , y , v , add= TRUE )#add = TRUE にすると上書きされる。

ここで、関数 outer() を上と違う使い方をしているが、outer() はテンソル積の要素どうしの積を する部分を自分の好きな関数に置き換えられるのです。ここでは 2 つの要素で複素数を作り出して います。contour() は等高線を描くための関数です。

(6)

3

ヘルプとデモ

Rには豊富なヘルプと、「このパッケージを使えばこんなことができるんだぜ」と言ってくるデ モがついています。困ったとき、ひまなときはぜひ試してみましょう。本章では、パッケージの導 入方法とデモ、ヘルプの使い方を説明しましょう。

3.1

パッケージ

パッケージを使うことで R に、より強力な関数群を追加することができます。 パッケージの導入はとても簡単です。RGui ウィンドウのメニューバーにある”パッケージ→ パッ ケージのインストール”を選択、ミラーサイトを選んで、導入したいパッケージを選ぶだけです。あ とは R が勝手にインストールしてくれます。 ためしに、高機能な 3D プロットを提供してくれる rgl パッケージをインストールしてみましょう。 まず、”パッケージ→ パッケージのインストール”を選択しましょう。ミラーサイトは Janese(tokyo) を選びましょう。自分のいる地域に一番近いところを選ぶのがマナーです。OK を押すとパッケー ジの選択画面に移ります。大量のパッケージが表示されます。下のほうにある rgl を選択しましょ う。あとは、R に任せましょう。 インストールが終わったら、パッケージを使うために library(rgl) と打ち込みましょう。このよう に、追加でパッケージを使いたいときは、 >  library(パッケージ名) で使いたいパッケージを読み込む必要があります。”パッケージ→ パッケージの読み込み”でもパッ ケージの読み込みができます。こちらを使うと、現在使えるパッケージの一覧が出るので便利です。

3.2

デモ

たいていの場合、各パッケージにはそのパッケージで、できることを見せてくれる、デモが備 わっています。 それでは、先ほどインストールした rgl のデモを見てみましょう。デモを起動するには、 >  demo(パッケージ名) と打ち込みましょう。demo(rgl) と打ったらデモが始まります。エンターを押すと先に進みます。 デモが表示されない場合は、パッケージの読み込んでいない可能性があります。library(rgl) を実 行しましょう。 Rでは、パッケージだけでなく、それぞれの関数の例を見ることもできます。例を見るには、 >  example(関数名)

(7)

3 ヘルプとデモ 図 3.1: rgl のデモで表示させる 3D 画像。 と打ち込みます。ためしに example(persp) と打ってみましょう。いろいろな 3D 画像が表示された でしょうか? 以下に、いくつか面白いデモを載せておきます。 デモ名 graphics lattice image plotmath

3.3

ヘルプ

たいていの関数やパッケージには、ヘルプがあります。関数やパッケージのヘルプを見たいと きは、 > ?関数名 または >  help(関数名) と打ち込むと html ヘルプが表示されます。R 全体のヘルプは、 >  help.start() と打ち込めば、ブラウザーが起動して html ヘルプを見ることができます。パッケージに含まれる オブジェクト (定数や関数のこと) を知りたいときは、 >  library(help=パッケージ名) と打ち込みましょう。関数の引数を見たいときは、 >  str(関数名) と打ち込みましょう。引数の一覧が表示されます。関数の定義を見たいときは、

(8)

3 ヘルプとデモ

> 関数名 と打ち込みましょう。

(9)

4

rgl

を用いた、3D

グラフィックス

レポートで使ったプログラムを載せておきます。 リスト 4.1 genkai<- 10 ; bunkatu<- 50 ; hani<- 3 ;

x<- seq( - hani , hani , length = ( bunkatu + 1 ) ) ; y<- x ;

z<- outer( x , y , function( a , b ) { a + b ∗1i } ) ;

w<- exp( 1 / z ) ;

w[ is.na( w ) ]<- genkai ;

u<- Re( w ) ; v<- Im( w ) ;

u[ which( u>genkai ) ] <- genkai ; v[ which( v>genkai ) ] <- genkai ;

u[ which( u<( - genkai ) ) ] <- ( - genkai ) ; v[ which( v<( - genkai ) ) ] <- ( - genkai ) ;

open3d( ) ;

rgl.bg( color= ”#6666ff” )

surface3d( x , y , u , color= ”#ff0000” , alpha = 0.8 , back = ”lines” ) ; surface3d( x , y , v , color= ”#00ff00” , alpha = 0.8 , back = ”lines” ) ;

genkaiは 3D グラフの上下の限界を指定します。大きくしすぎるとグラフが見えなくなります。

bunkatuは大きくするとグラフがより細かくなります。

haniは x と y の範囲です。

wに好きな関数を入れるとその結果をプロットしてくれます。

(10)

4 rglを用いた、3D グラフィックス

る前に必ず実行してください。

rgl.bg()で背景の色を指定します。

surface3dでグラフを描画します。

(11)

5

ミニミニリファレンス

演算子 <- 値の代入 >- 値の代入 ∗ 乗算 ˜ べき乗 + 加算 - 減算 / 除算 %% あまり %/% 商 %o% テンソル積 %∗% 行列の積 == 等しい != 等しくない <= 以下 >= 以上 < より小さい > より大きい ! 否定 & ベクトルの理論積 && スカラーの理論積 | ベクトルの理論輪 || スカラーの理論輪 算術関数 abs() 絶対値 sqrt() ルート round() 丸め込み floor() 切り捨て ceiling() 切り上げ exp() log()

(12)

5 ミニミニリファレンス log2() log10() sin() cos() tan() asin() アークサイン acos() atan() sign(x) xの符号 min(x) xの最小の要素 max(x) xの最大の要素 sum(x) xの総和 prod(x) xの総積 sd(x) 標準偏差 cumsum() 累乗和 runif(n) 均一分布による n 個の乱数の生成 union(x,y) x,yの和集合 intersect(x,y) x,yの積集合 unique(x) xから重複した要素を取り除く any(x) xのうち 1 つでも真だと真 all(x) 1つでも偽なら偽 which(条件) 条件を満たす要素番号 which.min(x) xの最大値 which.max(x) xの最大値 eigen(x) xの固有値と固有ベクトル t(x) 転置行列 outer(A,B) テンソル積 sweep(x,n,a) n次元を指定して掃き出し 文字列 paste(x1,x2,· · · ) 文字列の結合 関数・クラス function() 関数名<- function(引数 1,· · · ) 定義内容 とやって関数を定義。使うときは 関数名 (引数たち) 引数で a=デフォルト値とやるとオプションを追加できる。

(13)

5 ミニミニリファレンス

関数も関数クラスの変数として扱われる。 制御文

; ひとつの命令の終わり

for()· · · forループ。R では for(i=1;i<5;i++) を for(i in 1:4) とかく。 inの後ろには、一回のループごとに i に入れたいベクトルを持ってくる。 一つ目の要素から順に i に入る。 while whileループ while(条件) ループ内容 repeat repeatループ repeat内容。break とあうまで永遠にループ break いまいるループを抜け出す next ループのはじめに戻る。

if if(条件)else if(条件)else

ベクトル seq(a,b) aから b まで 1 の間隔で要素をもつベクトル オプション length= x : a から b までの要素数 x のベクトルを作る by=x : 間隔を x にする。 sapply(x,f) xから要素をひとつずつ取り出し関数 f に入れる。結果はベクトル。 mapply(f,x1,x2,· · · ) sapplyの x が複数になったバージョン。 システム setwd(”パス”) 作業ディレクトリの変更 getwd() 現在の作業ディレクトリ file(”ファイル”) ファイルへのコネクションオブジェクトを返す。 readLines(con) コネクション con から一行一行を読み込みベクトルを返す。 cat(X,file=”ファイル名”) Xをファイルに出力 Sys.time() 1970/1/1 からの経過秒 Sys.Date() 日付 グラフィックデバイス 画像の描画前に実行。ファイルは file=”ファイル名”で指定。 width=a,length=b でたて横の大きさを指定。 描画が終わったら必ず、dev.off() でデバイスを閉じること。 win.metafile() グラフィックをメタファイルに出力 postscript() ポストスクリプトに出力 pdf() PDFに出力 pictex() pictexに出力 png() pngに出力 jpeg() jpegに出力

(14)

5 ミニミニリファレンス

bmp() ビットマップに出力

tiff() tiff に出力

グラフィック描画

plot(a,b) a,bは同じ次元のベクトル。a が x 座標、b が y 座標

lines(a,b) a,bは同じ次元のベクトル。

aが x 座標、b が y 座標で、ついになった要素の点を結んでいく。

abline(a=s,b=k) 傾き s、切片 k の直線。

text(x,y,text) (x,y)に text を書く。

オプション

このオプションはさまざまな描画関数に使える・・・と思う。

type= ”x” : グラフの形式 x=p 点、l 直線、o 両方、n なし (軸だけ) col= ”#rrggbb” : 色の指定

cex= 1:テキストの大きさ、1 が標準

main=”popo” : sub = ”coco” :グラフのメインタイトルとサブタイトル xlim,ylim=c(最小, 最大): x,y の地域と領域

axes= TRUE/FALSE : x,y 軸を書くかどうか

その他、help(par) を見よう。 rgl rgl.open() デバイスの生成 rgl.set() デバイスのセット rgl.cur() デバイスの番号 rgl.close() デバイスを閉じる rgl.clear() 図の消去 rgl.pop() デバイスの消去 rgl.quit() デバイスの終了 rgl.viewpoint() 視点のセット rgl.light() 光源のセット rgl.bg() 背景の設定 rgl.points() 点のプロット rgl.sprites() 点のプロット rgl.lines() 線のプロット rgl.triangles() 三角形のプロット rgl.surface() 三次元プロット rgl.spheres() 長方形のプロット rgl.snapshot() 図の保存 srgl.bbox() 箱のプロット

図 1.1: R の起動画面。命令は全てコンソールで実行する。

参照

関連したドキュメント

There is a bijection between left cosets of S n in the affine group and certain types of partitions (see Bjorner and Brenti (1996) and Eriksson and Eriksson (1998)).. In B-B,

(The Elliott-Halberstam conjecture does allow one to take B = 2 in (1.39), and therefore leads to small improve- ments in Huxley’s results, which for r ≥ 2 are weaker than the result

[r]

“Breuil-M´ezard conjecture and modularity lifting for potentially semistable deformations after

lines. Notice that Theorem 4 can be reformulated so as to give the mean harmonic stability of the configuration rather than that of the separate foliations. To this end it is

S., Oxford Advanced Learner's Dictionary of Current English, Oxford University Press, Oxford

これはつまり十進法ではなく、一進法を用いて自然数を表記するということである。とは いえ数が大きくなると見にくくなるので、.. 0, 1,

At the end of the section, we will be in the position to present the main result of this work: a representation of the inverse of T under certain conditions on the H¨older