12-11-30 kashiwa.r #5 初めてのR rを始める前に知っておきたい10のこと

24
12/11/16 初めてのR R を始める前に知っておきたい 10 のこと R を始める前に知っておきたい 10 のこと R を始める前に知っておきたい 10 のこと @yuifu そんなに知る必要はなかったかもし れません… そんなに知る必要はなかったかもし れません…

Upload: haruka-ozaki

Post on 07-Jul-2015

1.107 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: 12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと

12/11/16

初めてのRR を始める前に知っておきたい 10 のこと R を始める前に知っておきたい 10 のこと R を始める前に知っておきたい 10 のこと

@yuifu

そんなに知る必要はなかったかもしれません…

そんなに知る必要はなかったかもしれません…

Page 2: 12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと

Rはとっつきやすい• Rは CUI とかプログラミングをあまりや

ったことない人でも使える

• パッケージが充実

• 生物系や人文系も使う(統計に必要だからといった理由)

• ネットでドキュメントも充実

http://www.flickr.com/photos/geekdreams/4981490170/in/photostream

Page 3: 12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと

トラブルもある…• Rを扱うのに情報系の知識がないと

トラブルに陥りがち

• マニュアル通りにできればいいけどエラーに対応できない

• Rの中身,言語の特性を知っていれば色々捗る

http://www.flickr.com/photos/geekdreams/4980887029/

Page 4: 12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと

知っておくと便利なことがある• 本発表では,

•プログラミングとかコマンド入力に不慣れな人が

• Rを始める上で知っておくと色々捗るぞ

• なことを概説する

http://www.flickr.com/photos/geekdreams/4980892135/in/photostream

Page 5: 12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと

今日の内容1 .代入2.データ型3.データ構造4.引数と戻り値5.ディレクトリ 6.データの入出力7.デフォルト8.実行される順番9.RStudio

1 0.ヘルプ

http://www.flickr.com/photos/geekdreams/4982938127/sizes/l/in/photostream/

Page 6: 12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと

代入• 変数に値を入れることを代入という

• 容れ物 <- 入れたいもの

1

x <- 1x <- 1

> result <- t.test(a, na.action=T)> result> result <- t.test(a, na.action=T)> result One Sample t-testdata: a t = One Sample t-testdata: a t = 5.7446, df = 9, p-value = 0.0002782alternative hypothesis: true mean is not 5.7446, df = 9, p-value = 0.0002782alternative hypothesis: true mean is not equal to 0 95 percent confidence interval: 3.334149 7.665851 sample equal to 0 95 percent confidence interval: 3.334149 7.665851 sample estimates:mean of x 5.5 estimates:mean of x 5.5

Page 7: 12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと

データ型• Rではすべてがオブジェクト

• それぞれのオブジェクトが1つのクラスに属する class( )

• オブジェクトには長さがある length( )

• すべてのオブジェクトにはデータ型またはモードがある mode( )

2> (x <- matrix(0, 2, 3)) [,1] [,2] [,3]> (x <- matrix(0, 2, 3)) [,1] [,2] [,3][1,] 0 0 0[2,] 0 0 0> [1,] 0 0 0[2,] 0 0 0> class(x)[1] "matrix"> mode(x)[1] class(x)[1] "matrix"> mode(x)[1] "numeric"> length(x)[1] 6"numeric"> length(x)[1] 6

Page 8: 12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと

データ型• atomic なデータ型( type )

• NULL: 空の値

• logical: 論理値( TRUE/FALSE/NA )

• numeric: 整数・実数

• complex: 複素数

• character: 文字・文字列

• 下のデータ型は上のデータ型を表現可能

• 下のデータ型を上のデータ型に変換すると情報の損失がおこる

• あと factor (カテゴリカル変数)も

2> (x <- matrix(0, 2, 3)) [,1] [,2] [,3]> (x <- matrix(0, 2, 3)) [,1] [,2] [,3][1,] 0 0 0[2,] 0 0 0> [1,] 0 0 0[2,] 0 0 0> class(x)[1] "matrix"> mode(x)[1] class(x)[1] "matrix"> mode(x)[1] "numeric"> length(x)[1] 6"numeric"> length(x)[1] 6

Page 9: 12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと

データ型• あるデータ型のオブジェクトをつく

• numeric( ) など

• あるデータ型かどうかを確かめる

• is.numeric( ) など

• データ型を変換する

• as.numeric( ) など

2

> (a <- numeric(1))[1] 0> > (a <- numeric(1))[1] 0> is.character(a)[1] FALSE> is.character(a)[1] FALSE> is.logical(a)[1] FALSE> is.numeric(a)is.logical(a)[1] FALSE> is.numeric(a)[1] TRUE> b <- 3.14> as.logical(b)[1] [1] TRUE> b <- 3.14> as.logical(b)[1] TRUETRUE> b * 5[1] 15.7> as.logical(b) * 5[1] 5> > b * 5[1] 15.7> as.logical(b) * 5[1] 5> as.character(b)[1] "3.14"as.character(b)[1] "3.14"

Page 10: 12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと

データ構造• データ構造 : 色んなデータ型のオブジェクトを集めたもの

• 同じデータ型のオブジェクトのみから成るもの

• ベクトル vector : 1 次元

• 行列 matrix : 2 次元

• 配列 array : 多次元

• 異なるデータ型のオブジェクトから成るもの

• リスト list : 何でも

• データフレーム data frame : 特殊なリスト(各要素は同じ長さのベクトル)

3

Page 11: 12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと

データ構造• つくりかた

• ベクトルは色々

• c( )

• rep( )

• seq( )

• matrix( )

• array( )

• list( )

• data.frame( )

3> (x <- c("Alice", "Bob"))[1] "Alice" "Bob" > (x <- c("Alice", "Bob"))[1] "Alice" "Bob" > (a <- matrix(1:10, 2, 5)) [,1] [,2] [,3] [,4] [,5][1,] 1 3 5 7 9[2,] 2 4 > (a <- matrix(1:10, 2, 5)) [,1] [,2] [,3] [,4] [,5][1,] 1 3 5 7 9[2,] 2 4 6 8 10 6 8 10

> (l <- list(c(1,2,3,4), matrix(1:4, 2, 2)))[[1]][1] 1 2 3 4[[2]] [,1] [,2][1,] 1 3[2,] > (l <- list(c(1,2,3,4), matrix(1:4, 2, 2)))[[1]][1] 1 2 3 4[[2]] [,1] [,2][1,] 1 3[2,] 2 4 2 4> (d <- data.frame(name = c("Nobita", "Takeshi", "Shizuka"), sex=c("M", "M", > (d <- data.frame(name = c("Nobita", "Takeshi", "Shizuka"), sex=c("M", "M", "F"), age = c(11, 12, 11))) name sex age1 Nobita M 112 Takeshi M 123 "F"), age = c(11, 12, 11))) name sex age1 Nobita M 112 Takeshi M 123 Shizuka F 11Shizuka F 11

Page 12: 12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと

データ構造• 要素へのアクセス

• ベクトル : x[1]

• 行列 : x[1, 2]

• 配列 : x[1, 2, 2]

• リスト : x[[1]]

• データフレーム : 色々

3> x[1][1] "Alice"> x[1][1] "Alice"

> a[1,2][1] 3> a[1,2][1] 3

> l[[1]][1] 1 2 3 4> l[[1]][2][1] 2> l[[1]][1] 1 2 3 4> l[[1]][2][1] 2

> d[[1]][1] Nobita Takeshi ShizukaLevels: Nobita > d[[1]][1] Nobita Takeshi ShizukaLevels: Nobita Shizuka Takeshi> d[1] name1 Nobita2 Shizuka Takeshi> d[1] name1 Nobita2 Takeshi3 Shizuka> d[1,2][1] MLevels: F MTakeshi3 Shizuka> d[1,2][1] MLevels: F M

Page 13: 12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと

引数と戻り値• 引数 augment

• 関数に与える設定値(パラメータとも)

• 「ひきすう」と読む

• 戻り値 return value

• 関数が返す値(計算結果とか)

4> t.test(a, na.action=T)> t.test(a, na.action=T) One Sample t-One Sample t-testdata: a t = 5.7446, df = 9, p-value = testdata: a t = 5.7446, df = 9, p-value = 0.0002782alternative hypothesis: true mean is not 0.0002782alternative hypothesis: true mean is not equal to 0 95 percent confidence interval: equal to 0 95 percent confidence interval: 3.334149 7.665851 sample estimates:mean of x 3.334149 7.665851 sample estimates:mean of x 5.5 5.5

Page 14: 12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと

ディレクトリ• 「なぜ ここにいる?」

• R を実行するとき,ツリー構造のどこかに必ずいる(作業ディレクトリ)

• ディレクトリ構造はツリーで表される

• 「でも僕は分からない僕はどこにいるんだ僕って何なんだ僕って何なんだ!」

• 作業ディレクトリの確認 : getwd( )

• 「僕はここにいてもいいんだ!」

• 作業ディレクトリの変更 : setwd( )

5

> getwd()[1] "/Users/haruka"> getwd()[1] "/Users/haruka"

> setwd("Dropbox/")> getwd()[1] > setwd("Dropbox/")> getwd()[1] "/Users/haruka/Dropbox"> "/Users/haruka/Dropbox"> setwd("/Users/haruka/")setwd("/Users/haruka/")

Page 15: 12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと

データの入出力• 入力

• read.table(“ ファイルへのパス” , header=T, sep=”,”)

• 表形式を想定

• エラーが出たら,どこかが表形式になっていない

• 出力

• write.table( オブジェクト,”出力ファイルのパス” , sep=”\t”)

6

Page 16: 12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと

デフォルト• こちらで指定しないと自動的に設定される引数がある(デフォルト設定)

• なんかうまくいかなかったらデフォルトをチェックしてみてもいいかも

7

read.table(file, header = FALSE, sep = "", quote = "\"'", dec = ".", row.names, col.names, read.table(file, header = FALSE, sep = "", quote = "\"'", dec = ".", row.names, col.names, as.is = !stringsAsFactors, na.strings = "NA", colClasses = NA, nrows = -1, skip = as.is = !stringsAsFactors, na.strings = "NA", colClasses = NA, nrows = -1, skip = 0, check.names = TRUE, fill = !blank.lines.skip, strip.white = FALSE, blank.lines.skip = TRUE, 0, check.names = TRUE, fill = !blank.lines.skip, strip.white = FALSE, blank.lines.skip = TRUE, comment.char = "#", allowEscapes = FALSE, flush = FALSE, comment.char = "#", allowEscapes = FALSE, flush = FALSE, stringsAsFactors = default.stringsAsFactors(), fileEncoding = "", encoding = "unknown", text)stringsAsFactors = default.stringsAsFactors(), fileEncoding = "", encoding = "unknown", text)

Page 17: 12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと

実行される順番• 複数のコマンドをどういう順番で実

行するか

• 逐次処理 : 普通に実行

• if 文:条件式が真であると中身を実行

• ループ制御

• for 文 : ベクトルで条件を指定

• while 文:条件式をループごとに評価する

• 制御語 : repeat, next, break

8

> a <- 1; a <- a + 1;> a[1] 2> a <- 1; a <- a + 1;> a[1] 2

> if(FALSE){1}else if(TRUE){2}else{3}[1] 2> if(FALSE){1}else if(TRUE){2}else{3}[1] 2

> x <- 0> for(i in 1:10){+ x <- x + i+ }> x[1] 55> x <- 0> for(i in 1:10){+ x <- x + i+ }> x[1] 55

> while(x>0){+ x <- x -10+ }> x[1] -5> while(x>0){+ x <- x -10+ }> x[1] -5

Page 18: 12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと

RStudio

• R の開発環境

• http://www.rstudio.org

• エディタでスクリプト書いてコピペするより便利

Page 19: 12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと

RStudio

• R の開発環境

• http://www.rstudio.org

• エディタでスクリプト書いてコピペするより便利

9

Page 20: 12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと

RStudio

• R の開発環境

• http://www.rstudio.org

• エディタでスクリプト書いてコピペするより便利

• コンソール : R のコマンドを実行するところ

• ワークスペース : オブジェクトが保持されているところ

9

Page 21: 12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと

ヘルプ• ? ほげ

• ヘルプの構造

• Description: 簡単な説明

• Usage: 使い方( formal な記述)

• Arguments: 引数(パラメタ)

• Details: 詳細な説明(補足)

• Value: どんな値を返すか

• References: 参考文献

• See Also: 関連する関数など

• Examples: 使い方の例

> ?boxplot> ?boxplot> help(boxplot)> help(boxplot)

10

Page 22: 12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと

ヘルプ• ? ほげ

• ヘルプの構造

• Description: 簡単な説明

• Usage: 使い方( formal な記述)

• Arguments: 引数(パラメタ)

• Details: 詳細な説明(補足)

• Value: どんな値を返すか

• References: 参考文献

• See Also: 関連する関数など

• Examples: 使い方の例

10

Page 23: 12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと

ヘルプ• ? ほげ

• ヘルプの構造

• Description: 簡単な説明

• Usage: 使い方( formal な記述)

• Arguments: 引数(パラメタ)

• Details: 詳細な説明(補足)

• Value: どんな値を返すか

• References: 参考文献

• See Also: 関連する関数など

• Examples: 使い方の例

10

Page 24: 12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと

ヘルプ• ? ほげ

• ヘルプの構造

• Description: 簡単な説明

• Usage: 使い方( formal な記述)

• Arguments: 引数(パラメタ)

• Details: 詳細な説明(補足)

• Value: どんな値を返すか

• References: 参考文献

• See Also: 関連する関数など

• Examples: 使い方の例

10