SlideShare a Scribd company logo
1 of 11
Download to read offline
Osaka.R#5 初心者講習会資料
                           2011/04/23
                             林真広


スクリプトの実行
   スクリプト(コマンド,プログラム,命令ともいう)をコンソール,またはエディタに書き込む
   エディタは,メニューバーから「ファイル>新しいスクリプト」とたどって起動する




                                        エディタ
        コンソール



   エディタに書いたスクリプトは,保存しておけば,一度 R を閉じても,「ファイル>スクリプトを開
    く」で読み込める
   コンソールにスクリプトを書き込んだ場合は,エンターキーを押せば実行される
   エディタに書き込んだ場合は,Ctrl+R でカーソルのある行が実行される
       範囲を選択して Ctrl+R を押せば,選択した範囲すべてが実行される
       「編集>カーソル行または選択中の R コードを実行」またはツールバーのボタンでも同じ
   大文字小文字,全角半角の区別あり(全角は基本的に使わないほうがいい!)
       特に記号の全角半角に注意が必要
       "”$$!!++--==(()) 見分けがつきますか…?
       変換ではなく IM を On/Off したほうが確実




                               1
コンソールの状態




   左は何でも入力できる状態。左端に「>」が表示されている
   右は続きの入力を待っている状態。左端に「+」が表示されている
       この状態の場合,「正しく」続きを入力しなければエラーになる
       Esc キーを押すか「その他>現在の計算を中断」で待機状態をキャンセルできる


最初のスクリプト
# print という関数(機能)に"Hello, world!"という文字列を渡す
print("Hello, world!")
# コンソールに"Hello, world!"と表示される
# [1, 2, 5, 4]というベクトルを x という変数に保存
x <- c(1, 2, 5, 4)
# mean という関数に x を入力,出力を y という変数に保存
y <- mean(x)     # 平均値が計算される
# y の中身を表示
y
   「#」を書くと,それ以降はコメントとして扱われる(処理の上で無視される)
   半角のスペースは見やすさのために記号や関数名の前後などに挿入できる
       「1 + 1」「print( "Hello, world!" )」「mean (x)」など
       「x<    -y」「me   an(x)」などはだめ
       記号の前後(「x <- y」や「1 + 1」),コンマの後ろ(「c(1, 2, 3)」)に入れると読みやす
        くなる
       改行も適宜挿入できるが,挿入できる場所はコンマや記号の後ろにかぎられる
       スペースの使い方などは自分ルールでもいいが,Google's R Style Guide や R
        Coding Conventions などの既存のルールに従うと,読みやすいスクリプトが書ける
   R の操作には関数を使う
       基本的な操作は,「関数(値)」と命令するだけ。数学の f(x)と同じ
       さらに f(x)と同様に,入力に対して関数は必ず値を返す(値は数値とは限らない)
   関数に入力する値を引数(ひきすう),関数が返す値を返り値または戻り値と呼ぶ
       mean の例の場合,x という変数が引数,3 という数値が返り値
   複数の引数を関数に入力する場合,区切り文字として「,」を使う
       例えば「mean(x, na.rm=TRUE)」,na.rm は欠損値(NA)を省くか否か


                                      2
理論編――――――――――――――――――――
関数の使い方
   関数は,関数(引数 1, 引数 2, 引数 3, ...)というふうに使う
   引数は名前を持っていて,関数(名前=引数)という書き方をする
   名前は省略可能だが,省略できない場合もあるので省略しないほうが無難
   引数に初期値が設定されている場合,引数を省略できる
       ただし,例えば 3 つ引数がある関数で第 2 引数を省略する場合,第 3 引数は名前を省
        略できない
       でないと,第 2 引数が省略されたのか第 3 引数が省略されたのか R には判断できない

                                         初期値




               引数の名前




変数
   変数は入れ物のようなもの
   変数に入れる実体をオブジェクトと呼ぶ
   新たな変数を作るときは,「新たな変数 <- オブジェクト(または変数)」というふうに書く
   すべての関数は値(オブジェクト)を返すので,これも変数に入れられる
       「新たな変数 <- 関数(引数 1, 引数 2, 引数 3, ...)」とすればいい


オブジェクト
   オブジェクトにはクラス(種類)がある
   もっとも基本的なクラスは数値(numeric),文字列(character),論理(logical)クラス
   他 に 重 要 な ク ラ ス は 因 子 ( factor ) , 行 列 ( matrix ) , リ ス ト ( list ) , デ ー タ フ レ ー ム
    (data.frame)クラス
       ここでいう因子は因子分析の因子とは関係がなく,カテゴリ変数のこと
       行列は二次元の行列
       データフレームは,ケース(行)×変数(列)という形の,分析に用いるデータセット
       R を使う用途によってクラスの重要度は異なるので最初からすべて理解する必要はない
   オブジェクトのクラスによって扱いが異なるので,どのクラスのオブジェクトを操作しているのか
    を常に意識しよう


                                          3
数値(numeric)クラス
1 + 2
x <- 10 – 5
y <- x + 9
is.numeric(y) # 引数が数値クラスならば TRUE,そうでなければ FALSE を返す
4 * 5 / 10    # 「*」はかけ算,「/」は割り算
(3 + 6) * 2^3 # 「^」は累乗(この場合 2 の 3 乗)。演算の順番は数学と同じで,括弧も使える
c(1, 3) + 2   # [1, 3]というベクトルを作り,1 を足す
z <- 1:5      # [1, 2, 3, 4, 5]というベクトルを作る
z[2] + z[3]   # z の 2 番目の要素と 3 番目の要素を足しあわせる
     R ではほとんどのクラスのオブジェクトがベクトル
     一つの数字でも,長さ 1 のベクトル
     数学のベクトルのように難しく考えるのではなく,複数のオブジェクトをひとまとめにして便利に
      扱える機能と考えよう
     変数[数字]と書けば,その変数の中の,与えた数字の位置にある要素を取り出せる
         この数字を,添字またはインデックスと呼ぶ


行列(matrix)クラス
     2 次元の行列を扱うためのクラス
     行列演算する人は必須
     しない人は要素へのアクセスの仕方だけ覚えておけばだいたい大丈夫
         関数の返り値が行列のことがよくある
mat <- matrix(1:15, nrow=3, ncol=5, byrow=TRUE)
# nrow で行数,ncol で列数を指定(普通はどちらか一方でいい)
# byrow=TRUE にすると,ベクトルを行方向に並べて行列を作る(デフォルトは byrow=FALSE)
mat
mat <- matrix(1:15, nrow=3, ncol=5, byrow=FALSE)
mat
dim(mat)       # 行数,列数を取得
dimnames(mat) <- list(c("r1", "r2", "r3"),
                     c("c1", "c2", "c3", "c4", "c5"))   # 行名,列名を設定
mat[2, 3]      # mat[行, 列]の要素を取り出す
mat[2,]        # 2 行目全体を取り出す
mat[, 3]        # 3 列目全体を取り出す
mat[2, 1:3]        # 2 行目の 1~3 列目の要素を取り出す



                                    4
文字列(character)クラス
"文字列"              # ダブルコーテーションで文字を囲むと,文字列オブジェクトとして扱われる
v1 <- c("名前", "性別", "年齢")
is.character(v1)      # 引数が文字列クラスならば TRUE,そうでなければ FALSE を返す
is.numeric(v1)
v2 <- c("1", "2", "3") # 数値もダブルコーテーションで囲めば文字列オブジェクト
is.numeric(v2)
   ダブルコーテーションを全角にしないよう注意!
        日本語の文字列オブジェクトを作ろうとするときに失敗しやすい
   シングルコーテーションでもいい(「'文字列'」)
        文字列にダブルコーテーションを含めたい場合はシングルコーテーションを使う
        「'文字列の中に"を入れる'」
   文字列オブジェクトもベクトル


論理(logical)クラス
   条件判断や関数のオプションの ON,OFF に使われる
   TRUE,FALSE の 2 種類だけ
   TRUE は「真」,FALSE は「偽」
TRUE
“TRUE”           # 表示の違いに注目
TRUE <- “真” # TRUE,FALSE は変数名にはできない
x <- 4
x == 5
x < 5
y <- x >= 4      # 変数にも入れられる
y                # 論理ベクトル
is.logical(y)
x <- 1:4
x[c(TRUE, TRUE, FALSE, FALSE)] # 添字の代わりに論理ベクトルで要素を選択
x <= 2
x[x <= 2]     # 応用的な要素の選択方法。条件によって要素を選択
print(“R”, quote=TRUE)     # 関数の引数として論理オブジェクトを使う
print(“R”, quote=F)       # 引数の場合,TRUE は T,FALSE は F と省略できる
   省略記法は間違いの元なので最初のうちはあまり使わない方がいい




                                   5
データフレーム(data.frame)クラス
     表形式のデータを扱うためのクラス
     一列が一つの変数
sex <- c("男性", "男性", "男性", "女性", "女性", "女性")
age <- c(20, 35, 50, 42, 31, 22)
df <- data.frame(sex, age)
df
df$sex         # データフレーム内の変数にアクセス
df[["age"]]    # 変数にアクセスするもう一つの方法
colnames(df) # 変数名の取得
colnames(df)[1] <- "性別" # 変数名の変更


df$job <- c(1, 0, 1, 0, 1, 0) # 新しい変数の作成
attach(df)     # データフレーム内の変数を大局的環境に展開
mean(age)      # データフレーム内の変数を直接扱える,が…
age <- c(10, 10, 10, 10, 10, 10)
detach(df)     # attach の解除
df$age         # attach 中の変数の編集は反映されない
     同じ長さのベクトルを引数に取る
     引数は主に数値オブジェクトか文字列オブジェクト
         ただし,文字列オブジェクトはデフォルトでは因子(factor)オブジェクトに変換される
     attach は便利だが,エラーのもとになりやすいので推奨しない


因子(factor)クラス
     文字列オブジェクトに,カテゴリの概念を加えたものと考えればいい
     各種カテゴリカルデータ分析に必要
sex       # 文字列オブジェクト
df$sex    # 因子オブジェクト。表示の違いに注目
summary(df$sex)     # カテゴリの概念があるので,カテゴリごとに集計できる


リスト(list)クラス
     各種クラスのオブジェクトをひとまとめにするためのオブジェクト
     データフレームは実はリストの拡張なので,操作方法は似ている
l1 <- list(num=1:5,
          char=c("a", "b", "c", "d"),
          mat=matrix(1:9, ncol=3))   # 「名前=オブジェクト(または変数)」で要素を設定

                                        6
# リストにはなんでも入る!
# なんらかの統計解析をおこなう関数は,たいてい返り値がリスト
l1
l1[["num"]]
li$num       # 要素へのアクセスの仕方はデータフレームと同じ


実際の分析
data(iris)      # R に組み込まれているデータの読み込み
is.data.frame(iris) # データフレームオブジェクト
summary(iris)         # データフレームの概要
cor(iris$Sepal.Length, iris$Sepal.Width)   # 相関係数の計算


median(iris$Sepal.Length) # 中央値
iris$cat1 <- "high"        # 新しい変数
iris$cat1[iris$Sepal.Length < 5.8] <- "low"
# Sepal.Length が 5.8 以下ならば"low"というカテゴリに


table(iris$Species, iris$cat1)   # クロス表作成




                                    7
実践編――――――――――――――――――――
作業ディレクトリの設定
   作業ディレクトリ(ディレクトリはフォルダとだいたい同じ意味)とは,データの入出力の際に基
    準となるディレクトリ
   作業の前にまず設定しておく
# 現在の作業ディレクトリを返す(Get Working Directory)
getwd()
# 作業ディレクトリの設定(Set Working Directory)
setwd("c:/Users/UserName/Documents")
# R でのディレクトリの区切り文字は"/"もしくは Windows の場合は"¥¥"も可
# ダイアログで対話的にディレクトリを選択し,ディレクトリのパスを返す
choose.dir()
# choose.dir()のファイル版
choose.files()
# 対話的にディレクトリを選択し,作業ディレクトリに設定する
setwd(choose.dir())


 パッケージのインストール,読み込み
   パッケージの追加により機能を増やせる
         メニューバーから”パッケージ>パッケージのインストール”
         どこからダウンロードするかを選ぶ。ダウンロードできるものはどこでも同じなので,Japan
          の中から好きなものを選ぶ
   関数を使ってインストールすることもできる
install.packages("Hmisc")
# 一覧から探す必要がないのでおすすめ
install.packages(c("memisc", "car"))
# 複数まとめてインストールすることもできる


library(Hmisc)   # パッケージの読み込み


テキストデータの読み込み
read.csv("sample.csv", header=TRUE)
# 作業ディレクトリから sample.csv を読み込み
# header は一行目を列の名前として読み込むかどうか
read.delim("sample.txt", header=TRUE) # tab 区切りの場合

                                       8
read.table("sample.txt")
# より柔軟にテキストファイルを読み込む。詳細は help(read.table)
# data.frame という形式で読み込まれる


他のソフトウェアのデータの読み込み
   R は様々な形式のデータを読み込むことができる
library(foreign)      # 他形式のデータの入出力用パッケージ
d1 <- read.spss("bank.sav", to.data.frame=TRUE, reencode="shift-jis")
# reencode は文字コードの指定。Windows の場合はたいていなくても大丈夫
# 他にも read.xport,read.dta などがある


データの書き込み
write.csv(d1, "sample.csv")
write.table(d1, "sample.txt")


データの操作
summary(d1)     # 全データの要約統計量
describe(d1)    # Hmisc パッケージの関数(summary より詳しい)
head(d1)        # データの先頭数行を表示。末尾は tail(...)
colnames(d1)    # データに含まれる変数の名前を取得
d1$SEX          # 変数へのアクセス
d1$SEX[5]       # 変数の 5 番目のケース
d1[5,3]         # [行番号, 列番号]という形式でもアクセスできる


データの閲覧(単純集計表)
# カテゴリ変数の場合
table(d1$JOBCAT)
summary(d1$JOBCAT)
describe(d1$JOBCAT)
# 連続変数の場合
table(d1$AGE)      # 実用的ではない
stem(d1$AGE)       # 幹葉図
hist(d1$AGE, breaks="FD")       # ヒストグラム
# breaks は区切り方の指定。デフォルトの方法は古典的すぎるので変更




                                     9
データの閲覧(記述統計)
summary(d1$SALNOW)
describe(d1$SALNOW)
mean(d1$SALNOW, na.rm=TRUE)
# na.rm は欠損値を省くかどうか
# このデータには欠損値がないのでどちらでも結果は変わらない
sd(d1$SALNOW, na.rm=TRUE)      # 不偏標準偏差
# 他にも var(),max(),min(),range()などがある
# na.rm はこれら記述統計の関数では大概使えるが,常に使えるわけではない


データの閲覧(クロス集計表)
table(d1$MINORITY, d1$JOBCAT)    # 行,列の順番


library(memisc)      # memisc は社会科学で便利な機能がまとめられている
aggregate(JOBCAT ~ MINORITY, data=d1)   # 返り値は data.frame
# 「従属変数 ~ 独立変数」という書き方は頻繁に出てくるので要チェック
aggregate(percent(JOBCAT) ~ MINORITY, data=d1)   # パーセントで表示
genTable (percent(JOBCAT) ~ MINORITY, data=d1)   # 返り値は table


変数のリコード
   リコードの方法はたくさんあるが,memisc の recode()が最も汎用的
   Hmisc,car パッケージにも recode()がある。先に読み込んだものが上書きされるので,
    memisc を一番最後に読み込むように!
d1$AGE3 <- recode(d1$AGE,
                  "低" <- range(min , 40),
                  "中" <- range(40.01, 60),
                  "高" <- range(60.01, max))
d1$JOB3 <- recode(d1$JOBCAT,
            "事務"        <- c("事務職", "事務研修員"),
            "マニュアル" <- "警備員",
            "専門・管理" <- c("専門職研修員", "管理職", "MBA 研修員", "技術職"))
   R ではカテゴリ変数と連続変数が明確に区別されることに注意!




                                   10
ドキュメント編――――――――――――――――――
help 等のドキュメントの使い方
   関数を初めて使うとき,使い方がよくわからないとき,エラーが出るとき,必ず help を読む!
   特に初めて使う関数の help は,流し読みでもいいから絶対に目を通す!
help(describe)
?describe     # help(describe)と同じ。利便性のための省略形。


help の読み方
   すべて理解する必要はない
   Usage には関数の使い方が書いてある
       引数のクラスによって使い方がちがう関数の場合,クラス別の使い方が書いてある(ことも
        ある)
   最も重要なのは Arguments
       引数の説明が書いてある
       最も多いエラーは Type Error(数値が必要なところに因子を渡す等,クラスの間違い)
       エラーなら実害はないが,期待とはちがう処理が行われていることも…
       どの引数にどのクラスのオブジェクトを渡さなければならないかを確認する!
   Value には返り値の詳細が書いてあるのでこれも重要
   References には参考になる論文や web ページが書いてある
   See Also には似た機能を持つ関数や関連する関数が書いてある
   Example は二番目に重要
       文章を読んで分からなくても,実際に動かしてみたら分かることがよくある
       example 関数は,help 内の example をまとめて実行してくれる
example(lm)


新しいパッケージを使うとき(demo,vignette,パッケージの help)
   使ってみたいパッケージの情報がウェブや書籍で見つからない場合がある
       そうでなくとも新しいパッケージは使い方がよくわからないもの
   デモ,ビネット(vignette),パッケージの help を見れば多くの情報を得ることができる
   ただし,デモとビニエットは必ずあるわけではない
demo(package="graphics")     # graphics パッケージが持っているデモの一覧
demo("graphics")
vignette(package="memisc")    # memisc パッケージが持っているビニエットの一覧
vignette("anes48")
help(package="Hmisc")      # Hmisc パッケージのヘルプ

                                   11

More Related Content

What's hot

Rで学ぶデータマイニングI 第8章〜第13章
Rで学ぶデータマイニングI 第8章〜第13章Rで学ぶデータマイニングI 第8章〜第13章
Rで学ぶデータマイニングI 第8章〜第13章Prunus 1350
 
データ解析技術入門(R編)
データ解析技術入門(R編)データ解析技術入門(R編)
データ解析技術入門(R編)Takumi Asai
 
BOF1-Scala02.pdf
BOF1-Scala02.pdfBOF1-Scala02.pdf
BOF1-Scala02.pdfHiroshi Ono
 
Clojure programming-chapter-2
Clojure programming-chapter-2Clojure programming-chapter-2
Clojure programming-chapter-2Masao Kato
 
Ekmett勉強会発表資料
Ekmett勉強会発表資料Ekmett勉強会発表資料
Ekmett勉強会発表資料時響 逢坂
 
PHP, JavaScriptプログラマのためのC#入門
PHP, JavaScriptプログラマのためのC#入門PHP, JavaScriptプログラマのためのC#入門
PHP, JavaScriptプログラマのためのC#入門Tomo Mizoe
 
不均衡データのクラス分類
不均衡データのクラス分類不均衡データのクラス分類
不均衡データのクラス分類Shintaro Fukushima
 
Feature Selection with R / in JP
Feature Selection with R / in JPFeature Selection with R / in JP
Feature Selection with R / in JPSercan Ahi
 
Van laarhoven lens
Van laarhoven lensVan laarhoven lens
Van laarhoven lensNaoki Aoyama
 
すごいHaskell楽しく学ぼう-第12章モノイド-
すごいHaskell楽しく学ぼう-第12章モノイド-すごいHaskell楽しく学ぼう-第12章モノイド-
すごいHaskell楽しく学ぼう-第12章モノイド-Hiromasa Ohashi
 
Pythonで始めるDropboxAPI
Pythonで始めるDropboxAPIPythonで始めるDropboxAPI
Pythonで始めるDropboxAPIDaisuke Igarashi
 
[機械学習]文章のクラス分類
[機械学習]文章のクラス分類[機械学習]文章のクラス分類
[機械学習]文章のクラス分類Tetsuya Hasegawa
 
魂のコーディング
魂のコーディング魂のコーディング
魂のコーディングDaisuke Tasaki
 
これからの「言語」の話をしよう ―― 未来を生きるためのツール
これからの「言語」の話をしよう ―― 未来を生きるためのツールこれからの「言語」の話をしよう ―― 未来を生きるためのツール
これからの「言語」の話をしよう ―― 未来を生きるためのツールNobuhisa Koizumi
 
ジェネリクスの基礎と クラス設計への応用
ジェネリクスの基礎とクラス設計への応用ジェネリクスの基礎とクラス設計への応用
ジェネリクスの基礎と クラス設計への応用nagise
 
第3回輪講
第3回輪講第3回輪講
第3回輪講mh_amako
 
Rあんなときこんなとき(tokyo r#12)
Rあんなときこんなとき(tokyo r#12)Rあんなときこんなとき(tokyo r#12)
Rあんなときこんなとき(tokyo r#12)Shintaro Fukushima
 
Yamadai.Rデモンストレーションセッション
Yamadai.RデモンストレーションセッションYamadai.Rデモンストレーションセッション
Yamadai.Rデモンストレーションセッション考司 小杉
 
Ekmett勉強会発表資料
Ekmett勉強会発表資料Ekmett勉強会発表資料
Ekmett勉強会発表資料時響 逢坂
 
12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと
12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと 12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと
12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと Haruka Ozaki
 

What's hot (20)

Rで学ぶデータマイニングI 第8章〜第13章
Rで学ぶデータマイニングI 第8章〜第13章Rで学ぶデータマイニングI 第8章〜第13章
Rで学ぶデータマイニングI 第8章〜第13章
 
データ解析技術入門(R編)
データ解析技術入門(R編)データ解析技術入門(R編)
データ解析技術入門(R編)
 
BOF1-Scala02.pdf
BOF1-Scala02.pdfBOF1-Scala02.pdf
BOF1-Scala02.pdf
 
Clojure programming-chapter-2
Clojure programming-chapter-2Clojure programming-chapter-2
Clojure programming-chapter-2
 
Ekmett勉強会発表資料
Ekmett勉強会発表資料Ekmett勉強会発表資料
Ekmett勉強会発表資料
 
PHP, JavaScriptプログラマのためのC#入門
PHP, JavaScriptプログラマのためのC#入門PHP, JavaScriptプログラマのためのC#入門
PHP, JavaScriptプログラマのためのC#入門
 
不均衡データのクラス分類
不均衡データのクラス分類不均衡データのクラス分類
不均衡データのクラス分類
 
Feature Selection with R / in JP
Feature Selection with R / in JPFeature Selection with R / in JP
Feature Selection with R / in JP
 
Van laarhoven lens
Van laarhoven lensVan laarhoven lens
Van laarhoven lens
 
すごいHaskell楽しく学ぼう-第12章モノイド-
すごいHaskell楽しく学ぼう-第12章モノイド-すごいHaskell楽しく学ぼう-第12章モノイド-
すごいHaskell楽しく学ぼう-第12章モノイド-
 
Pythonで始めるDropboxAPI
Pythonで始めるDropboxAPIPythonで始めるDropboxAPI
Pythonで始めるDropboxAPI
 
[機械学習]文章のクラス分類
[機械学習]文章のクラス分類[機械学習]文章のクラス分類
[機械学習]文章のクラス分類
 
魂のコーディング
魂のコーディング魂のコーディング
魂のコーディング
 
これからの「言語」の話をしよう ―― 未来を生きるためのツール
これからの「言語」の話をしよう ―― 未来を生きるためのツールこれからの「言語」の話をしよう ―― 未来を生きるためのツール
これからの「言語」の話をしよう ―― 未来を生きるためのツール
 
ジェネリクスの基礎と クラス設計への応用
ジェネリクスの基礎とクラス設計への応用ジェネリクスの基礎とクラス設計への応用
ジェネリクスの基礎と クラス設計への応用
 
第3回輪講
第3回輪講第3回輪講
第3回輪講
 
Rあんなときこんなとき(tokyo r#12)
Rあんなときこんなとき(tokyo r#12)Rあんなときこんなとき(tokyo r#12)
Rあんなときこんなとき(tokyo r#12)
 
Yamadai.Rデモンストレーションセッション
Yamadai.RデモンストレーションセッションYamadai.Rデモンストレーションセッション
Yamadai.Rデモンストレーションセッション
 
Ekmett勉強会発表資料
Ekmett勉強会発表資料Ekmett勉強会発表資料
Ekmett勉強会発表資料
 
12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと
12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと 12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと
12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと
 

Similar to 初心者講習会資料(Osaka.R#5)

初心者講習会資料(Osaka.R#7)
初心者講習会資料(Osaka.R#7)初心者講習会資料(Osaka.R#7)
初心者講習会資料(Osaka.R#7)Masahiro Hayashi
 
20170923 excelユーザーのためのr入門
20170923 excelユーザーのためのr入門20170923 excelユーザーのためのr入門
20170923 excelユーザーのためのr入門Takashi Kitano
 
プログラミング言語Scala
プログラミング言語Scalaプログラミング言語Scala
プログラミング言語ScalaTanUkkii
 
Ⅰ. Rの基礎 2017
Ⅰ. Rの基礎 2017Ⅰ. Rの基礎 2017
Ⅰ. Rの基礎 2017wada, kazumi
 
Scala の関数型プログラミングを支える技術
Scala の関数型プログラミングを支える技術Scala の関数型プログラミングを支える技術
Scala の関数型プログラミングを支える技術Naoki Aoyama
 
Rプログラミング02 データ入出力編
Rプログラミング02 データ入出力編Rプログラミング02 データ入出力編
Rプログラミング02 データ入出力編wada, kazumi
 
第一回Data mining勉強会 -第二章 - 原案
第一回Data mining勉強会 -第二章 - 原案第一回Data mining勉強会 -第二章 - 原案
第一回Data mining勉強会 -第二章 - 原案yushin_hirano
 
第一回Data mining勉強会 -第二章
第一回Data mining勉強会 -第二章第一回Data mining勉強会 -第二章
第一回Data mining勉強会 -第二章Tomonobu_Hirano
 
すごいHaskell読書会#1 in 大阪
すごいHaskell読書会#1 in 大阪すごいHaskell読書会#1 in 大阪
すごいHaskell読書会#1 in 大阪yashigani
 
統計環境R_データ入出力編2016
統計環境R_データ入出力編2016統計環境R_データ入出力編2016
統計環境R_データ入出力編2016wada, kazumi
 
プログラムの処方箋~健康なコードと病んだコード
プログラムの処方箋~健康なコードと病んだコードプログラムの処方箋~健康なコードと病んだコード
プログラムの処方箋~健康なコードと病んだコードShigenori Sagawa
 
Python standard 2022 Spring
Python standard 2022 SpringPython standard 2022 Spring
Python standard 2022 Springanyakichi
 
第2回R勉強会1
第2回R勉強会1第2回R勉強会1
第2回R勉強会1Paweł Rusin
 
Lisp Tutorial for Pythonista : Day 3
Lisp Tutorial for Pythonista : Day 3Lisp Tutorial for Pythonista : Day 3
Lisp Tutorial for Pythonista : Day 3Ransui Iso
 
K010 appstat201201
K010 appstat201201K010 appstat201201
K010 appstat201201t2tarumi
 
KETpic できれいな図を書こう
KETpic できれいな図を書こうKETpic できれいな図を書こう
KETpic できれいな図を書こうYoshitomo Akimoto
 
(Ruby使いのための)Scalaで学ぶ関数型プログラミング
(Ruby使いのための)Scalaで学ぶ関数型プログラミング(Ruby使いのための)Scalaで学ぶ関数型プログラミング
(Ruby使いのための)Scalaで学ぶ関数型プログラミングOuka Yuka
 

Similar to 初心者講習会資料(Osaka.R#5) (20)

初心者講習会資料(Osaka.R#7)
初心者講習会資料(Osaka.R#7)初心者講習会資料(Osaka.R#7)
初心者講習会資料(Osaka.R#7)
 
20170923 excelユーザーのためのr入門
20170923 excelユーザーのためのr入門20170923 excelユーザーのためのr入門
20170923 excelユーザーのためのr入門
 
R intro
R introR intro
R intro
 
プログラミング言語Scala
プログラミング言語Scalaプログラミング言語Scala
プログラミング言語Scala
 
Ⅰ. Rの基礎 2017
Ⅰ. Rの基礎 2017Ⅰ. Rの基礎 2017
Ⅰ. Rの基礎 2017
 
Scala の関数型プログラミングを支える技術
Scala の関数型プログラミングを支える技術Scala の関数型プログラミングを支える技術
Scala の関数型プログラミングを支える技術
 
Rプログラミング02 データ入出力編
Rプログラミング02 データ入出力編Rプログラミング02 データ入出力編
Rプログラミング02 データ入出力編
 
R_note_01_ver1.1
R_note_01_ver1.1 R_note_01_ver1.1
R_note_01_ver1.1
 
第一回Data mining勉強会 -第二章 - 原案
第一回Data mining勉強会 -第二章 - 原案第一回Data mining勉強会 -第二章 - 原案
第一回Data mining勉強会 -第二章 - 原案
 
第一回Data mining勉強会 -第二章
第一回Data mining勉強会 -第二章第一回Data mining勉強会 -第二章
第一回Data mining勉強会 -第二章
 
すごいHaskell読書会#1 in 大阪
すごいHaskell読書会#1 in 大阪すごいHaskell読書会#1 in 大阪
すごいHaskell読書会#1 in 大阪
 
統計環境R_データ入出力編2016
統計環境R_データ入出力編2016統計環境R_データ入出力編2016
統計環境R_データ入出力編2016
 
R note 01_ver1.2
R note 01_ver1.2R note 01_ver1.2
R note 01_ver1.2
 
プログラムの処方箋~健康なコードと病んだコード
プログラムの処方箋~健康なコードと病んだコードプログラムの処方箋~健康なコードと病んだコード
プログラムの処方箋~健康なコードと病んだコード
 
Python standard 2022 Spring
Python standard 2022 SpringPython standard 2022 Spring
Python standard 2022 Spring
 
第2回R勉強会1
第2回R勉強会1第2回R勉強会1
第2回R勉強会1
 
Lisp Tutorial for Pythonista : Day 3
Lisp Tutorial for Pythonista : Day 3Lisp Tutorial for Pythonista : Day 3
Lisp Tutorial for Pythonista : Day 3
 
K010 appstat201201
K010 appstat201201K010 appstat201201
K010 appstat201201
 
KETpic できれいな図を書こう
KETpic できれいな図を書こうKETpic できれいな図を書こう
KETpic できれいな図を書こう
 
(Ruby使いのための)Scalaで学ぶ関数型プログラミング
(Ruby使いのための)Scalaで学ぶ関数型プログラミング(Ruby使いのための)Scalaで学ぶ関数型プログラミング
(Ruby使いのための)Scalaで学ぶ関数型プログラミング
 

More from Masahiro Hayashi

オレオレR-GUIを作りたい
オレオレR-GUIを作りたいオレオレR-GUIを作りたい
オレオレR-GUIを作りたいMasahiro Hayashi
 
Rzパッケージの紹介
Rzパッケージの紹介Rzパッケージの紹介
Rzパッケージの紹介Masahiro Hayashi
 
重回帰職人の朝は早い
重回帰職人の朝は早い重回帰職人の朝は早い
重回帰職人の朝は早いMasahiro Hayashi
 
Rzパッケージ―spssのようなデータ管理インターフェイス
Rzパッケージ―spssのようなデータ管理インターフェイスRzパッケージ―spssのようなデータ管理インターフェイス
Rzパッケージ―spssのようなデータ管理インターフェイスMasahiro Hayashi
 
はじめてでもわかるデータ入出力
はじめてでもわかるデータ入出力はじめてでもわかるデータ入出力
はじめてでもわかるデータ入出力Masahiro Hayashi
 

More from Masahiro Hayashi (6)

オレオレR-GUIを作りたい
オレオレR-GUIを作りたいオレオレR-GUIを作りたい
オレオレR-GUIを作りたい
 
Rzパッケージの紹介
Rzパッケージの紹介Rzパッケージの紹介
Rzパッケージの紹介
 
重回帰職人の朝は早い
重回帰職人の朝は早い重回帰職人の朝は早い
重回帰職人の朝は早い
 
Rzパッケージ―spssのようなデータ管理インターフェイス
Rzパッケージ―spssのようなデータ管理インターフェイスRzパッケージ―spssのようなデータ管理インターフェイス
Rzパッケージ―spssのようなデータ管理インターフェイス
 
はじめてでもわかるデータ入出力
はじめてでもわかるデータ入出力はじめてでもわかるデータ入出力
はじめてでもわかるデータ入出力
 
RGtk2入門
RGtk2入門RGtk2入門
RGtk2入門
 

初心者講習会資料(Osaka.R#5)

  • 1. Osaka.R#5 初心者講習会資料 2011/04/23 林真広 スクリプトの実行  スクリプト(コマンド,プログラム,命令ともいう)をコンソール,またはエディタに書き込む  エディタは,メニューバーから「ファイル>新しいスクリプト」とたどって起動する エディタ コンソール  エディタに書いたスクリプトは,保存しておけば,一度 R を閉じても,「ファイル>スクリプトを開 く」で読み込める  コンソールにスクリプトを書き込んだ場合は,エンターキーを押せば実行される  エディタに書き込んだ場合は,Ctrl+R でカーソルのある行が実行される  範囲を選択して Ctrl+R を押せば,選択した範囲すべてが実行される  「編集>カーソル行または選択中の R コードを実行」またはツールバーのボタンでも同じ  大文字小文字,全角半角の区別あり(全角は基本的に使わないほうがいい!)  特に記号の全角半角に注意が必要  "”$$!!++--==(()) 見分けがつきますか…?  変換ではなく IM を On/Off したほうが確実 1
  • 2. コンソールの状態  左は何でも入力できる状態。左端に「>」が表示されている  右は続きの入力を待っている状態。左端に「+」が表示されている  この状態の場合,「正しく」続きを入力しなければエラーになる  Esc キーを押すか「その他>現在の計算を中断」で待機状態をキャンセルできる 最初のスクリプト # print という関数(機能)に"Hello, world!"という文字列を渡す print("Hello, world!") # コンソールに"Hello, world!"と表示される # [1, 2, 5, 4]というベクトルを x という変数に保存 x <- c(1, 2, 5, 4) # mean という関数に x を入力,出力を y という変数に保存 y <- mean(x) # 平均値が計算される # y の中身を表示 y  「#」を書くと,それ以降はコメントとして扱われる(処理の上で無視される)  半角のスペースは見やすさのために記号や関数名の前後などに挿入できる  「1 + 1」「print( "Hello, world!" )」「mean (x)」など  「x< -y」「me an(x)」などはだめ  記号の前後(「x <- y」や「1 + 1」),コンマの後ろ(「c(1, 2, 3)」)に入れると読みやす くなる  改行も適宜挿入できるが,挿入できる場所はコンマや記号の後ろにかぎられる  スペースの使い方などは自分ルールでもいいが,Google's R Style Guide や R Coding Conventions などの既存のルールに従うと,読みやすいスクリプトが書ける  R の操作には関数を使う  基本的な操作は,「関数(値)」と命令するだけ。数学の f(x)と同じ  さらに f(x)と同様に,入力に対して関数は必ず値を返す(値は数値とは限らない)  関数に入力する値を引数(ひきすう),関数が返す値を返り値または戻り値と呼ぶ  mean の例の場合,x という変数が引数,3 という数値が返り値  複数の引数を関数に入力する場合,区切り文字として「,」を使う  例えば「mean(x, na.rm=TRUE)」,na.rm は欠損値(NA)を省くか否か 2
  • 3. 理論編―――――――――――――――――――― 関数の使い方  関数は,関数(引数 1, 引数 2, 引数 3, ...)というふうに使う  引数は名前を持っていて,関数(名前=引数)という書き方をする  名前は省略可能だが,省略できない場合もあるので省略しないほうが無難  引数に初期値が設定されている場合,引数を省略できる  ただし,例えば 3 つ引数がある関数で第 2 引数を省略する場合,第 3 引数は名前を省 略できない  でないと,第 2 引数が省略されたのか第 3 引数が省略されたのか R には判断できない 初期値 引数の名前 変数  変数は入れ物のようなもの  変数に入れる実体をオブジェクトと呼ぶ  新たな変数を作るときは,「新たな変数 <- オブジェクト(または変数)」というふうに書く  すべての関数は値(オブジェクト)を返すので,これも変数に入れられる  「新たな変数 <- 関数(引数 1, 引数 2, 引数 3, ...)」とすればいい オブジェクト  オブジェクトにはクラス(種類)がある  もっとも基本的なクラスは数値(numeric),文字列(character),論理(logical)クラス  他 に 重 要 な ク ラ ス は 因 子 ( factor ) , 行 列 ( matrix ) , リ ス ト ( list ) , デ ー タ フ レ ー ム (data.frame)クラス  ここでいう因子は因子分析の因子とは関係がなく,カテゴリ変数のこと  行列は二次元の行列  データフレームは,ケース(行)×変数(列)という形の,分析に用いるデータセット  R を使う用途によってクラスの重要度は異なるので最初からすべて理解する必要はない  オブジェクトのクラスによって扱いが異なるので,どのクラスのオブジェクトを操作しているのか を常に意識しよう 3
  • 4. 数値(numeric)クラス 1 + 2 x <- 10 – 5 y <- x + 9 is.numeric(y) # 引数が数値クラスならば TRUE,そうでなければ FALSE を返す 4 * 5 / 10 # 「*」はかけ算,「/」は割り算 (3 + 6) * 2^3 # 「^」は累乗(この場合 2 の 3 乗)。演算の順番は数学と同じで,括弧も使える c(1, 3) + 2 # [1, 3]というベクトルを作り,1 を足す z <- 1:5 # [1, 2, 3, 4, 5]というベクトルを作る z[2] + z[3] # z の 2 番目の要素と 3 番目の要素を足しあわせる  R ではほとんどのクラスのオブジェクトがベクトル  一つの数字でも,長さ 1 のベクトル  数学のベクトルのように難しく考えるのではなく,複数のオブジェクトをひとまとめにして便利に 扱える機能と考えよう  変数[数字]と書けば,その変数の中の,与えた数字の位置にある要素を取り出せる  この数字を,添字またはインデックスと呼ぶ 行列(matrix)クラス  2 次元の行列を扱うためのクラス  行列演算する人は必須  しない人は要素へのアクセスの仕方だけ覚えておけばだいたい大丈夫  関数の返り値が行列のことがよくある mat <- matrix(1:15, nrow=3, ncol=5, byrow=TRUE) # nrow で行数,ncol で列数を指定(普通はどちらか一方でいい) # byrow=TRUE にすると,ベクトルを行方向に並べて行列を作る(デフォルトは byrow=FALSE) mat mat <- matrix(1:15, nrow=3, ncol=5, byrow=FALSE) mat dim(mat) # 行数,列数を取得 dimnames(mat) <- list(c("r1", "r2", "r3"), c("c1", "c2", "c3", "c4", "c5")) # 行名,列名を設定 mat[2, 3] # mat[行, 列]の要素を取り出す mat[2,] # 2 行目全体を取り出す mat[, 3] # 3 列目全体を取り出す mat[2, 1:3] # 2 行目の 1~3 列目の要素を取り出す 4
  • 5. 文字列(character)クラス "文字列" # ダブルコーテーションで文字を囲むと,文字列オブジェクトとして扱われる v1 <- c("名前", "性別", "年齢") is.character(v1) # 引数が文字列クラスならば TRUE,そうでなければ FALSE を返す is.numeric(v1) v2 <- c("1", "2", "3") # 数値もダブルコーテーションで囲めば文字列オブジェクト is.numeric(v2)  ダブルコーテーションを全角にしないよう注意!  日本語の文字列オブジェクトを作ろうとするときに失敗しやすい  シングルコーテーションでもいい(「'文字列'」)  文字列にダブルコーテーションを含めたい場合はシングルコーテーションを使う  「'文字列の中に"を入れる'」  文字列オブジェクトもベクトル 論理(logical)クラス  条件判断や関数のオプションの ON,OFF に使われる  TRUE,FALSE の 2 種類だけ  TRUE は「真」,FALSE は「偽」 TRUE “TRUE” # 表示の違いに注目 TRUE <- “真” # TRUE,FALSE は変数名にはできない x <- 4 x == 5 x < 5 y <- x >= 4 # 変数にも入れられる y # 論理ベクトル is.logical(y) x <- 1:4 x[c(TRUE, TRUE, FALSE, FALSE)] # 添字の代わりに論理ベクトルで要素を選択 x <= 2 x[x <= 2] # 応用的な要素の選択方法。条件によって要素を選択 print(“R”, quote=TRUE) # 関数の引数として論理オブジェクトを使う print(“R”, quote=F) # 引数の場合,TRUE は T,FALSE は F と省略できる  省略記法は間違いの元なので最初のうちはあまり使わない方がいい 5
  • 6. データフレーム(data.frame)クラス  表形式のデータを扱うためのクラス  一列が一つの変数 sex <- c("男性", "男性", "男性", "女性", "女性", "女性") age <- c(20, 35, 50, 42, 31, 22) df <- data.frame(sex, age) df df$sex # データフレーム内の変数にアクセス df[["age"]] # 変数にアクセスするもう一つの方法 colnames(df) # 変数名の取得 colnames(df)[1] <- "性別" # 変数名の変更 df$job <- c(1, 0, 1, 0, 1, 0) # 新しい変数の作成 attach(df) # データフレーム内の変数を大局的環境に展開 mean(age) # データフレーム内の変数を直接扱える,が… age <- c(10, 10, 10, 10, 10, 10) detach(df) # attach の解除 df$age # attach 中の変数の編集は反映されない  同じ長さのベクトルを引数に取る  引数は主に数値オブジェクトか文字列オブジェクト  ただし,文字列オブジェクトはデフォルトでは因子(factor)オブジェクトに変換される  attach は便利だが,エラーのもとになりやすいので推奨しない 因子(factor)クラス  文字列オブジェクトに,カテゴリの概念を加えたものと考えればいい  各種カテゴリカルデータ分析に必要 sex # 文字列オブジェクト df$sex # 因子オブジェクト。表示の違いに注目 summary(df$sex) # カテゴリの概念があるので,カテゴリごとに集計できる リスト(list)クラス  各種クラスのオブジェクトをひとまとめにするためのオブジェクト  データフレームは実はリストの拡張なので,操作方法は似ている l1 <- list(num=1:5, char=c("a", "b", "c", "d"), mat=matrix(1:9, ncol=3)) # 「名前=オブジェクト(または変数)」で要素を設定 6
  • 7. # リストにはなんでも入る! # なんらかの統計解析をおこなう関数は,たいてい返り値がリスト l1 l1[["num"]] li$num # 要素へのアクセスの仕方はデータフレームと同じ 実際の分析 data(iris) # R に組み込まれているデータの読み込み is.data.frame(iris) # データフレームオブジェクト summary(iris) # データフレームの概要 cor(iris$Sepal.Length, iris$Sepal.Width) # 相関係数の計算 median(iris$Sepal.Length) # 中央値 iris$cat1 <- "high" # 新しい変数 iris$cat1[iris$Sepal.Length < 5.8] <- "low" # Sepal.Length が 5.8 以下ならば"low"というカテゴリに table(iris$Species, iris$cat1) # クロス表作成 7
  • 8. 実践編―――――――――――――――――――― 作業ディレクトリの設定  作業ディレクトリ(ディレクトリはフォルダとだいたい同じ意味)とは,データの入出力の際に基 準となるディレクトリ  作業の前にまず設定しておく # 現在の作業ディレクトリを返す(Get Working Directory) getwd() # 作業ディレクトリの設定(Set Working Directory) setwd("c:/Users/UserName/Documents") # R でのディレクトリの区切り文字は"/"もしくは Windows の場合は"¥¥"も可 # ダイアログで対話的にディレクトリを選択し,ディレクトリのパスを返す choose.dir() # choose.dir()のファイル版 choose.files() # 対話的にディレクトリを選択し,作業ディレクトリに設定する setwd(choose.dir()) パッケージのインストール,読み込み  パッケージの追加により機能を増やせる  メニューバーから”パッケージ>パッケージのインストール”  どこからダウンロードするかを選ぶ。ダウンロードできるものはどこでも同じなので,Japan の中から好きなものを選ぶ  関数を使ってインストールすることもできる install.packages("Hmisc") # 一覧から探す必要がないのでおすすめ install.packages(c("memisc", "car")) # 複数まとめてインストールすることもできる library(Hmisc) # パッケージの読み込み テキストデータの読み込み read.csv("sample.csv", header=TRUE) # 作業ディレクトリから sample.csv を読み込み # header は一行目を列の名前として読み込むかどうか read.delim("sample.txt", header=TRUE) # tab 区切りの場合 8
  • 9. read.table("sample.txt") # より柔軟にテキストファイルを読み込む。詳細は help(read.table) # data.frame という形式で読み込まれる 他のソフトウェアのデータの読み込み  R は様々な形式のデータを読み込むことができる library(foreign) # 他形式のデータの入出力用パッケージ d1 <- read.spss("bank.sav", to.data.frame=TRUE, reencode="shift-jis") # reencode は文字コードの指定。Windows の場合はたいていなくても大丈夫 # 他にも read.xport,read.dta などがある データの書き込み write.csv(d1, "sample.csv") write.table(d1, "sample.txt") データの操作 summary(d1) # 全データの要約統計量 describe(d1) # Hmisc パッケージの関数(summary より詳しい) head(d1) # データの先頭数行を表示。末尾は tail(...) colnames(d1) # データに含まれる変数の名前を取得 d1$SEX # 変数へのアクセス d1$SEX[5] # 変数の 5 番目のケース d1[5,3] # [行番号, 列番号]という形式でもアクセスできる データの閲覧(単純集計表) # カテゴリ変数の場合 table(d1$JOBCAT) summary(d1$JOBCAT) describe(d1$JOBCAT) # 連続変数の場合 table(d1$AGE) # 実用的ではない stem(d1$AGE) # 幹葉図 hist(d1$AGE, breaks="FD") # ヒストグラム # breaks は区切り方の指定。デフォルトの方法は古典的すぎるので変更 9
  • 10. データの閲覧(記述統計) summary(d1$SALNOW) describe(d1$SALNOW) mean(d1$SALNOW, na.rm=TRUE) # na.rm は欠損値を省くかどうか # このデータには欠損値がないのでどちらでも結果は変わらない sd(d1$SALNOW, na.rm=TRUE) # 不偏標準偏差 # 他にも var(),max(),min(),range()などがある # na.rm はこれら記述統計の関数では大概使えるが,常に使えるわけではない データの閲覧(クロス集計表) table(d1$MINORITY, d1$JOBCAT) # 行,列の順番 library(memisc) # memisc は社会科学で便利な機能がまとめられている aggregate(JOBCAT ~ MINORITY, data=d1) # 返り値は data.frame # 「従属変数 ~ 独立変数」という書き方は頻繁に出てくるので要チェック aggregate(percent(JOBCAT) ~ MINORITY, data=d1) # パーセントで表示 genTable (percent(JOBCAT) ~ MINORITY, data=d1) # 返り値は table 変数のリコード  リコードの方法はたくさんあるが,memisc の recode()が最も汎用的  Hmisc,car パッケージにも recode()がある。先に読み込んだものが上書きされるので, memisc を一番最後に読み込むように! d1$AGE3 <- recode(d1$AGE, "低" <- range(min , 40), "中" <- range(40.01, 60), "高" <- range(60.01, max)) d1$JOB3 <- recode(d1$JOBCAT, "事務" <- c("事務職", "事務研修員"), "マニュアル" <- "警備員", "専門・管理" <- c("専門職研修員", "管理職", "MBA 研修員", "技術職"))  R ではカテゴリ変数と連続変数が明確に区別されることに注意! 10
  • 11. ドキュメント編―――――――――――――――――― help 等のドキュメントの使い方  関数を初めて使うとき,使い方がよくわからないとき,エラーが出るとき,必ず help を読む!  特に初めて使う関数の help は,流し読みでもいいから絶対に目を通す! help(describe) ?describe # help(describe)と同じ。利便性のための省略形。 help の読み方  すべて理解する必要はない  Usage には関数の使い方が書いてある  引数のクラスによって使い方がちがう関数の場合,クラス別の使い方が書いてある(ことも ある)  最も重要なのは Arguments  引数の説明が書いてある  最も多いエラーは Type Error(数値が必要なところに因子を渡す等,クラスの間違い)  エラーなら実害はないが,期待とはちがう処理が行われていることも…  どの引数にどのクラスのオブジェクトを渡さなければならないかを確認する!  Value には返り値の詳細が書いてあるのでこれも重要  References には参考になる論文や web ページが書いてある  See Also には似た機能を持つ関数や関連する関数が書いてある  Example は二番目に重要  文章を読んで分からなくても,実際に動かしてみたら分かることがよくある  example 関数は,help 内の example をまとめて実行してくれる example(lm) 新しいパッケージを使うとき(demo,vignette,パッケージの help)  使ってみたいパッケージの情報がウェブや書籍で見つからない場合がある  そうでなくとも新しいパッケージは使い方がよくわからないもの  デモ,ビネット(vignette),パッケージの help を見れば多くの情報を得ることができる  ただし,デモとビニエットは必ずあるわけではない demo(package="graphics") # graphics パッケージが持っているデモの一覧 demo("graphics") vignette(package="memisc") # memisc パッケージが持っているビニエットの一覧 vignette("anes48") help(package="Hmisc") # Hmisc パッケージのヘルプ 11