- 追加された行はこの色です。
- 削除された行はこの色です。
#author("2019-02-24T22:41:13+00:00","","")
#author("2019-02-24T23:34:37+00:00","","")
* R言語入門 [#u119428d]
#setlinebreak(on);
#TODO(関数の利用とapply)
#contents
-- 参考
--- https://www.r-project.org
--- https://cran.r-project.org/manuals.html
-- 関連
--- [[機械学習の為の数学の基礎]]
--- [[ディープラーニング入門]]
--- [[TensorFlow入門]]
--- [[Keras入門]]
--- [[Chainer入門]]
--- [[PyTorch入門]]
--- [[pandas入門]]
--- [[numpy入門]]
** 概要 [#zeb574ac]
#html(<div style="padding-left: 10px;">)
R言語は、統計解析向けのプログラミング言語及びその開発実行環境。
#html(</div>)
** インストール [#j9fb2c66]
#html(<div style="padding-left: 10px;">)
以下の URLからインストーラをダウンロードしてインストール
| - | URL |h
| R | http://cran.r-project.org/mirrors.html |
| R Studio | https://www.rstudio.com/products/rstudio/download/ |
#html(</div>)
** 変数への代入 [#m73b1483]
** 基本操作 [#ta44e21a]
#html(<div style="padding-left: 10px;">)
*** 開始と終了 [#r3acd067]
#html(<div style="padding-left: 10px;">)
Rがインストールされている環境で ''r'' を入力すれば、R がインタラクティブモードで起動する。
#myterm2(){{
r
R version 3.5.2 (2018-12-20) -- "Eggshell Igloo"
Copyright (C) 2018 The R Foundation for Statistical Computing
.
.
.
'demo()' と入力すればデモをみることができます。
'help()' とすればオンラインヘルプが出ます。
'help.start()' で HTML ブラウザによるヘルプがみられます。
'q()' と入力すれば R を終了します。
>
}}
終了は q()
#myterm2(){{
> q()
Save workspace image? [y/n/c]: n
}}
※ --save または --no-save オプション付きで起動した場合は、終了時の確認メッセージは表示されない。
#html(</div>)
*** ヘルプの表示方法 [#la3c91f7]
#html(<div style="padding-left: 10px;">)
''?コマンド名'' でコマンドのヘルプを表示する事ができる。
例)
#myterm2(){{
> ?read.table
read.table package:utils R Documentation
.
.
Usage:
read.table(file, header = FALSE, sep = "", quote = "\"'",
dec = ".", numerals = c("allow.loss", "warn.loss", "no.loss"),
row.names, col.names, 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,
.
.
}}
#html(</div>)
*** 変数への代入 [#m73b1483]
#html(<div style="padding-left: 10px;">)
変数への代入は <- または -> で行う。
以下は、1〜5までの連続した値のベクトルを生成し、x という変数に代入している。
#myterm2(){{
> x <- c(1:5)
> x
[1] 1 2 3 4 5
}}
左辺と右辺は入れ替える事も可能
複数の変数に代入する事も可能
#myterm2(){{
> 1:5 -> x -> y
> x <- y <- 1:5
> x
[1] 1 2 3 4 5
> y
[1] 1 2 3 4 5
}}
複数の変数に代入する事も可能
左辺と右辺は入れ替える事も可能
#myterm2(){{
> x <- y <- 1:5
> 1:5 -> x -> y
> x
[1] 1 2 3 4 5
> y
[1] 1 2 3 4 5
}}
#html(</div>)
** 連続した値の生成 [#k552614f]
*** 連続した値の生成 [#k552614f]
#html(<div style="padding-left: 10px;">)
n:m と記述する事で連続した値を生成する事ができる。
#myterm2(){{
> 1:5
[1] 1 2 3 4 5
}}
#html(</div>)
#html(<div style="padding-left: 10px;">)
開始値, 終了値, 増分 を指定して値を生成する場合は seq を使用する。
#myterm2(){{
> seq(1, 5, 2)
[1] 1 3 5
}}
#html(</div>)
** 繰り返し値の生成 [#me5a12bc]
*** 繰り返し値の生成 [#me5a12bc]
#html(<div style="padding-left: 10px;">)
任意の値をN個分繰り返すには rep を使用する。
#myterm2(){{
> rep(1, 5)
[1] 1 1 1 1 1
}}
値には ベクトルを指定する事もできる。
#myterm2(){{
> rep(1:3, 5)
[1] 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3
}}
#html(</div>)
** ベクトルの生成 [#l89aab77]
*** 定義済みの変数一覧を表示する [#t7b5139f]
#html(<div style="padding-left: 10px;">)
ベクトルの生成は c() で行う。
#myterm2(){{
> x <- c(100,200,300)
> x
[1] 100 200 300
}}
#html(</div>)
** 定義済みの変数一覧を表示する [#t7b5139f]
#html(<div style="padding-left: 10px;">)
定義した全ての変数の一覧を ls() で確認する事ができる。
#myterm2(){{
> x <- 1:10
> y <- 101:110
> ls()
[1] "x" "y"
}}
#html(</div>)
** 使わない変数を消す [#f67c34fb]
*** 使わない変数を消す [#f67c34fb]
#html(<div style="padding-left: 10px;">)
rm で定義した変数を削除する事ができる。
#myterm2(){{
> x <- 1:10
> y <- 101:110
> ls()
[1] "x" "y"
> rm(y)
> ls()
[1] "x"
}}
rm の 名前付き引数 list に変数名の一覧を指定して削除する事もできる。
※以下は、全ての変数を削除する例。
#myterm2(){{
> x <- 1:10
> y <- 101:110
> ls()
[1] "x" "y"
> rm(list=ls())
> ls()
character(0)
}}
#html(</div>)
** 外部スクリプトの読み込み [#p6b86aab]
*** 外部スクリプトの読み込み [#p6b86aab]
#html(<div style="padding-left: 10px;">)
別ファイルに保存したスクリプトを読み込むには source を使用する。
test.R
#mycode2(){{
x = c(1:5)
}}
実行例
#myterm2(){{
> source("test.R")
> x
[1] 1 2 3 4 5
}}
#html(</div>)
*** ワークスペースの保存 [#o6f8291a]
#html(<div style="padding-left: 10px;">)
Rでは作業中のワークスペースの状態をワークスペースに保存しておき、後から復元する事ができる。
変数 x, y, z を定義してRを終了(確認で y を入力)
#myterm2(){{
R
> x <- 1:10
> y <- 101:110
> z <- 201:210
> q()
Save workspace image? [y/n/c]: y
}}
再開
#myterm2(){{
R
.
.
[以前にセーブされたワークスペースを復帰します]
> ls()
[1] "x" "y" "z"
}}
R を --save または --no-save オプション付きで起動した場合は、Rの終了時に確認メッセージは表示されない。
※自動的に保存して(または保存しないで)終了する。
尚、変数 及び 履歴情報は作業ディレクトリ配下の .RData 及び .Rhistory というファイルに保存されている。
※これらのファイルを消せばワークスペースの状態を初期化できる。
#html(</div>)
*** コマンドラインから R のスクリプトを実行する [#u220a3d9]
#html(<div style="padding-left: 10px;">)
test.R
#mycode2(){{
x <- 1:10
cat(x)
}}
実行
#myterm2(){{
rscript test.R
1 2 3 4 5 6 7 8 9 10
}}
#html(</div>)
#html(</div>)
** オブジェクト内容の表示 [#b1c04a1d]
#html(<div style="padding-left: 10px;">)
*** 変数名のタイプによる表示 [#c23ac758]
#html(<div style="padding-left: 10px;">)
#myterm2(){{
> x <- 1:10
> x
[1] 1 2 3 4 5 6 7 8 9 10
}}
#html(</div>)
*** print による表示 [#fdcb4fe4]
#html(<div style="padding-left: 10px;">)
#myterm2(){{
> x <- 1:10
> print(x)
[1] 1 2 3 4 5 6 7 8 9 10
}}
#html(</div>)
*** sprintf [#qb6b4fb5]
#html(<div style="padding-left: 10px;">)
書式付きでオブジェクトを表示する場合には sprint を使用する。
#myterm2(){{
> sprintf("%3.2f", 123.456)
[1] "123.46"
}}
#html(</div>)
*** cat [#ca84f6b4]
#html(<div style="padding-left: 10px;">)
cat を使用すれば文字列をダブルクォーテーションなしで表示できる。
#myterm2(){{
> str1 = "ABCDEFG"
> cat(str1)
ABCDEFG
}}
#html(</div>)
*** str [#k06035be]
#html(<div style="padding-left: 10px;">)
str を使用すると、オブジェクトの内容をデータ型などの情報付きで表示できる。
#myterm2(){{
> str1 = "123"
> str(str1)
chr "123"
}}
#html(</div>)
#html(</div>)
** 処理制御 [#ta308837]
*** 条件分岐 [#ma266456]
#html(<div style="padding-left: 10px;">)
#myterm2(){{
> x = 10
> if (x > 5) {
+ print("x > 5")
+ print(x)
+ } else {
+ print("x <= 5")
+ print(x)
+ }
[1] "x > 5"
[1] 10
}}
#html(</div>)
*** forループ [#ve614fbe]
#html(<div style="padding-left: 10px;">)
繰り返し処理には for文が使用できる。
&color(red){ただし R の for文は遅いので処理を関数化して apply系で記述する方が高速に動作する。};
#myterm2(){{
> for (i in 1:5) {
+ print(i)
+ }
[1] 1
[1] 2
[1] 3
[1] 4
[1] 5
}}
#html(</div>)
*** whileループ [#ve614fbe]
#html(<div style="padding-left: 10px;">)
#TODO
#html(</div>)
*** switch文 [#v44928aa]
#html(<div style="padding-left: 10px;">)
#TODO
#html(</div>)
#html(</div>)
** ファイル入出力 [#zf6c6aea]
#html(<div style="padding-left: 10px;">)
*** 基本的なデータ入出力 [#he11ad56]
#html(<div style="padding-left: 10px;">)
#TODO
file
write
writeLine
#html(</div>)
以降の例で使用する csv ファイルは以下の通りとする。
browser-JP.csv
browser-JP.csv ( http://gs.statcounter.com/browser-market-share/all/japan より )
#mycode2(){{
"Date","Chrome","Safari","IE","Firefox","Edge","Android"
2018-06,41.96,31.83,11.5,6.63,4.29,0.97
2018-07,41.9,32.29,11.13,6.43,4.26,0.9
2018-08,42.54,31.91,11.15,6.44,4.23,0.9
2018-09,41.18,34.45,10.43,6.14,4.36,0.78
2018-10,43.11,33.01,10.2,6.2,4.23,0.69
2018-11,44.28,32.54,9.49,6.31,4.14,0.69
2018-12,44.47,31.96,9.21,6.81,4,0.74
}}
*** CSVファイルの入出力 [#n75dfefe]
*** 単純なファイルの入出力 [#he11ad56]
#html(<div style="padding-left: 10px;">)
#TODO
write.csv
file
write
writeLine
#html(</div>)
*** データフレームの入出力 [#be52291a]
*** CSVファイルの入出力 [#n75dfefe]
#html(<div style="padding-left: 10px;">)
read.table で ファイルからデータを読み込んで データフレームを生成する事が可能。
read.table で CSVファイルからデータフレームを生成できる。
#myterm2(){{
> read.table("browser-JP.csv", sep=",", header=T, row.names="Date")
Chrome Safari IE Firefox Edge Android
2018-06 41.96 31.83 11.50 6.63 4.29 0.97
2018-07 41.90 32.29 11.13 6.43 4.26 0.90
2018-08 42.54 31.91 11.15 6.44 4.23 0.90
2018-09 41.18 34.45 10.43 6.14 4.36 0.78
2018-10 43.11 33.01 10.20 6.20 4.23 0.69
2018-11 44.28 32.54 9.49 6.31 4.14 0.69
2018-12 44.47 31.96 9.21 6.81 4.00 0.74
}}
※sep="," で 列の区切り文字を指定している。
※header=T で1行目は列名である事を示している。
※row.names で行ラベルに使用する列名を指定している。(上記では "Date" 列のデータを行ラベルとして扱う旨を示している)
※詳細は ?read.table で確認。
write.table
write.table でデータフレームをCSVファイルに出力できる。
#myterm2(){{
TODO
> write.table(x, "output.csv", quote=F, col.names=T, row.names=T, sep=",")
}}
※詳細は ?write.table で確認。
#html(</div>)
*** Excelへのデータ出力 [#r12e1735]
#html(<div style="padding-left: 10px;">)
#TODO
write.xlsx()
write.xlsx2()
#html(</div>)
*** オブジェクトの保存と読み込み [#h34ae862]
#html(<div style="padding-left: 10px;">)
R ではオブジェクトそのものをファイルに保存したり、ファイルから復元する事ができる。
ベクトル x をファイルに保存)
#myterm2(){{
> x <- 1:10
> x
[1] 1 2 3 4 5 6 7 8 9 10
> save(x, file="x.rdata")
}}
いちど変数を削除後にファイルから x を読み込む)
#myterm2(){{
> rm(x)
> x
エラー: オブジェクト 'x' がありません
> load("x.rdata")
> x
[1] 1 2 3 4 5 6 7 8 9 10
}}
#html(</div>)
#html(</div>)
** 文字列の操作 [#pf712062]
#html(<div style="padding-left: 10px;">)
*** 文字列の結合 [#rd674a09]
#html(<div style="padding-left: 10px;">)
#myterm2(){{
> paste("abc", "def", sep="")
[1] "abcdef"
}}
#html(</div>)
#html(</div>)
** ベクトルの操作 [#be7e9df4]
#html(<div style="padding-left: 10px;">)
*** ベクトルの生成 [#i3c3ce12]
#html(<div style="padding-left: 10px;">)
c() でベクトルの生成を行う事ができる。
#myterm2(){{
> x <- c(100,200,300)
> x
[1] 100 200 300
}}
連続した値のベクトルであれば n:m でも生成可能。
#myterm2(){{
> x <- 1:5
> x
[1] 1 2 3 4 5
}}
他にファイルからデータを読み込んでデータフレームを生成する事も可能。( [[CSVファイルの入出力>#n75dfefe]] を参照 )
#html(</div>)
*** ベクトルの要素へのアクセス [#b04cf1cb]
#html(<div style="padding-left: 10px;">)
要素番号を指定して特定の要素にアクセスする事ができる。
#myterm2(){{
> x <- 10:20
> x
[1] 10 11 12 13 14 15 16 17 18 19 20
> x[2] <- 99
> x
[1] 10 99 12 13 14 15 16 17 18 19 20
}}
#html(</div>)
*** ベクトルの特定の値を書き換える [#bb4d9404]
#html(<div style="padding-left: 10px;">)
要素番号を指定して特定の要素にアクセスする事ができる。
#myterm2(){{
> x <- 10:20
> x
[1] 10 11 12 13 14 15 16 17 18 19 20
> x[x == 15] <- 999
> x
[1] 10 11 12 13 14 999 16 17 18 19 20
}}
上記を分けて書くと以下のようになる。
※真偽値リストを条件に指定して真である要素を書き換えている。(pandasのデータフレーム等と同じやり方)
#myterm2(){{
> x <- 10:20
> x
[1] 10 11 12 13 14 15 16 17 18 19 20
> condition <- x == 15
> condition
[1] FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE
> x[condition] <- 999
> x
[1] 10 11 12 13 14 999 16 17 18 19 20
}}
#html(</div>)
*** ベクトルの結合 [#mec11780]
#html(<div style="padding-left: 10px;">)
c() でベクトルを結合した別のベクトルを得る事ができる。
※c() の引数に指定したベクトル自体の内容は変わらない。
#myterm2(){{
> x <- 1:10
> y <- 11:20
> z <- c(x, y)
> x
[1] 1 2 3 4 5 6 7 8 9 10
> y
[1] 11 12 13 14 15 16 17 18 19 20
> z
[1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
}}
#html(</div>)
*** ベクトルの要素の追加 [#z40b1a27]
#html(<div style="padding-left: 10px;">)
append を使用するとベクトルに要素を追加した別のベクトルを得る事ができる。
※append の引数に指定したベクトル自体の内容は変わらない。
#myterm2(){{
> x <- 1:10
> y <- append(x, 101:105)
> x
[1] 1 2 3 4 5 6 7 8 9 10 # x 自体の内容は変わらない
> y
[1] 1 2 3 4 5 6 7 8 9 10 101 102 103 104 105
}}
#html(</div>)
#html(</div>)
** 行列の操作 [#g160ba11]
#html(<div style="padding-left: 10px;">)
*** 行列の生成 [#b6f7ca99]
matrix で行列を生成する事ができる。
#myterm2(){{
> matrix(1:9, nrow=3, ncol=3)
[,1] [,2] [,3]
[1,] 1 4 7
[2,] 2 5 8
[3,] 3 6 9
> matrix(1:9, nrow=3, ncol=3, byrow=T)
[,1] [,2] [,3]
[1,] 1 2 3
[2,] 4 5 6
[3,] 7 8 9
}}
#html(</div>)
*** 行列の要素へのアクセス [#s16ce8c5]
#html(<div style="padding-left: 10px;">)
行列の各要素へは [行No, 列No] でアクセス可能。
#myterm2(){{
> x <- matrix(1:9, nrow=3, ncol=3, byrow=T)
> x
[,1] [,2] [,3]
[1,] 1 2 3
[2,] 4 5 6
[3,] 7 8 9
> x[2,2]
[1] 5
> x[2,2] <- 10
> x
[,1] [,2] [,3]
[1,] 1 2 3
[2,] 4 10 6
[3,] 7 8 9
}}
以下のように、特定の値を変更する事も可能。
#myterm2(){{
> x <- matrix(1:9, nrow=3, ncol=3, byrow=T)
> x
[,1] [,2] [,3]
[1,] 1 2 3
[2,] 4 5 6
[3,] 7 8 9
> x[x == 1 | x == 8] <- 999
> x
[,1] [,2] [,3]
[1,] 999 2 3
[2,] 4 5 6
[3,] 7 999 9
}}
以下の例では偶数値を "even!" に書き換えている。
#myterm2(){{
> x <- matrix(1:9, nrow=3, ncol=3, byrow=T)
> x
[,1] [,2] [,3]
[1,] 1 2 3
[2,] 4 5 6
[3,] 7 8 9
> x[x %% 2 == 0] <- "even!"
> x
[,1] [,2] [,3]
[1,] "1" "even!" "3"
[2,] "even!" "5" "even!"
[3,] "7" "even!" "9"
}}
[[pandasのデータフレームと同じ様に>pandas入門]] Bool値のリストを作って真となるの要素を書き換える事も可能。
#myterm2(){{
> x <- matrix(1:9, nrow=3, ncol=3, byrow=T)
> x
[,1] [,2] [,3]
[1,] 1 2 3
[2,] 4 5 6
[3,] 7 8 9
> x[x %% 2 == 0 -> even]
[1] 4 2 8 6
> even
[,1] [,2] [,3]
[1,] FALSE TRUE FALSE
[2,] TRUE FALSE TRUE
[3,] FALSE TRUE FALSE
> x[even] <- "even!"
> x
[,1] [,2] [,3]
[1,] "1" "even!" "3"
[2,] "even!" "5" "even!"
[3,] "7" "even!" "9"
}}
#html(</div>)
*** 行列の結合 [#z1e96e61]
#html(<div style="padding-left: 10px;">)
rbind または cbind で行列を結合する事ができる。
※rbindは縦に行を結合、cbind は横に列を結合。
#myterm2(){{
> x = matrix(1:9,ncol = 3, nrow =3)
> y = matrix(11:13, ncol = 3, nrow =1)
> z = matrix(21:23, ncol = 1, nrow =3)
> x
[,1] [,2] [,3]
[1,] 1 4 7
[2,] 2 5 8
[3,] 3 6 9
> y
[,1] [,2] [,3]
[1,] 11 12 13
> z
[,1]
[1,] 21
[2,] 22
[3,] 23
> rbind(x, y)
[,1] [,2] [,3]
[1,] 1 4 7
[2,] 2 5 8
[3,] 3 6 9
[4,] 11 12 13
> cbind(x, z)
[,1] [,2] [,3] [,4]
[1,] 1 4 7 21
[2,] 2 5 8 22
[3,] 3 6 9 23
}}
#html(</div>)
*** 行列の演算 [#d098f734]
#html(<div style="padding-left: 10px;">)
行列の和、差
#myterm2(){{
> x <- matrix(1:4, 2, 2, byrow=T)
> x
[,1] [,2]
[1,] 1 2
[2,] 3 4
> y <- matrix(1:4, 2, 2, byrow=T)
> y
[,1] [,2]
[1,] 1 2
[2,] 3 4
> x + y # 行列の和
[,1] [,2]
[1,] 2 4
[2,] 6 8
> x - y # 行列の差
[,1] [,2]
[1,] 0 0
[2,] 0 0
}}
行列の積
#myterm2(){{
> x <- matrix(1:6, 2, 3, byrow=T)
> x
[,1] [,2] [,3]
[1,] 1 2 3
[2,] 4 5 6
> y <- matrix(1:6, 3, 2, byrow=T)
> y
[,1] [,2]
[1,] 1 2
[2,] 3 4
[3,] 5 6
> x %*% y # 行列積は %*% で行う( x * y だと要素毎の乗算になってしまう )
[,1] [,2]
[1,] 22 28
[2,] 49 64
}}
※ [[numpyでの演算結果>numpy入門#vd9870ad]] とも一致する。
#html(</div>)
#html(</div>)
** リストの操作 [#e0f640a6]
#html(<div style="padding-left: 10px;">)
ベクトルや行列などの異なる構造のデータを集めて 1 個のオブジェクトに纏める場合にはリストを使用する。
*** リストの生成 [#uae6f52c]
#html(<div style="padding-left: 10px;">)
#myterm2(){{
> x <- 1:10
> y <- 101:110
> list(x, y)
[[1]]
[1] 1 2 3 4 5 6 7 8 9 10
[[2]]
[1] 101 102 103 104 105 106 107 108 109 110
}}
#html(</div>)
*** リストの要素へのアクセス [#vfe27bbe]
#html(<div style="padding-left: 10px;">)
リストの要素には [要素番号] または [[要素番号]] でアクセスする事ができる。
[要素番号] でアクセスした場合の戻り値はリスト、[[要素番号]]でアクセスした場合の戻り値は要素の内容そのものとなる。
#myterm2(){{
> l = list(1,2,3)
> l[1]
[[1]]
[1] 1
> l[[1]]
[1] 1
}}
#html(</div>)
#html(</div>)
** データフレームの操作 [#wb69ca70]
#html(<div style="padding-left: 10px;">)
データフレームを使用すると異なる型のデータをまとめて1 つの変数として持つ事ができる。
単純な行列と違い、各行/列はラベルを持ち、ラベル指定による操作が可能。
列のデータ型が異なっていても扱える為、ベクトルやリストをデータフレームに変換することで統計解析がやりやすくなる。
以下、ブラウザシェアを例に記載する。
http://gs.statcounter.com/browser-market-share/all/japan
*** データフレームの生成 [#z0b8967f]
#html(<div style="padding-left: 10px;">)
データフレームは data.frame(列名=ベクトル, 列名=ベクトル, ... ) の形式で生成する。
#myterm2(){{
> # 行ラベル
> dates <- c("2018-06","2018-07","2018-08","2018-09","2018-10","2018-11","2018-12")
>
> # 以下列データ
> chrome <- c(41.96, 41.9, 42.54, 41.18, 43.11, 44.28, 44.47)
> safari <- c(31.83, 32.29, 31.91, 34.45, 33.01, 32.54, 31.96)
> ie <- c(11.5, 11.13, 11.15, 10.43, 10.2, 9.49, 9.21)
> firefox <- c(6.63, 6.43, 6.44, 6.14, 6.2, 6.31, 6.81)
> edge <- c(4.29, 4.26, 4.23, 4.36, 4.23, 4.14, 4.0)
>
> # データフレームの生成
> x = data.frame(Chrome=chrome, Safari=safari, IE=ie, Firefox=firefox, Edge=edge)
>
> # 行ラベルを付与
> rownames(x) <- dates
> x
Chrome Safari IE Firefox Edge
2018-06 41.96 31.83 11.50 6.63 4.29
2018-07 41.90 32.29 11.13 6.43 4.26
2018-08 42.54 31.91 11.15 6.44 4.23
2018-09 41.18 34.45 10.43 6.14 4.36
2018-10 43.11 33.01 10.20 6.20 4.23
2018-11 44.28 32.54 9.49 6.31 4.14
2018-12 44.47 31.96 9.21 6.81 4.00
}}
#html(</div>)
*** summary による列情報の概要表示 [#q6ed95de]
#html(<div style="padding-left: 10px;">)
summary で列毎の概要を表示する事ができる。
#myterm2(){{
> summary(x)
Chrome Safari IE Firefox
Min. :41.18 Min. :31.83 Min. : 9.210 Min. :6.140
1st Qu.:41.93 1st Qu.:31.93 1st Qu.: 9.845 1st Qu.:6.255
Median :42.54 Median :32.29 Median :10.430 Median :6.430
Mean :42.78 Mean :32.57 Mean :10.444 Mean :6.423
3rd Qu.:43.70 3rd Qu.:32.77 3rd Qu.:11.140 3rd Qu.:6.535
Max. :44.47 Max. :34.45 Max. :11.500 Max. :6.810
Edge
Min. :4.000
1st Qu.:4.185
Median :4.230
Mean :4.216
3rd Qu.:4.275
Max. :4.360
}}
#html(</div>)
*** データフレームを行列に変換する [#t3ecd062]
#html(<div style="padding-left: 10px;">)
as.matrix による変換
#myterm2(){{
> as.matrix(x)
Chrome Safari IE Firefox Edge
2018-06 41.96 31.83 11.50 6.63 4.29
2018-07 41.90 32.29 11.13 6.43 4.26
2018-08 42.54 31.91 11.15 6.44 4.23
2018-09 41.18 34.45 10.43 6.14 4.36
2018-10 43.11 33.01 10.20 6.20 4.23
2018-11 44.28 32.54 9.49 6.31 4.14
2018-12 44.47 31.96 9.21 6.81 4.00
}}
さらに matrix を噛ましてラベルを落とす
#myterm2(){{
> matrix(as.matrix(x), nrow(x), ncol(x))
[,1] [,2] [,3] [,4] [,5]
[1,] 41.96 31.83 11.50 6.63 4.29
[2,] 41.90 32.29 11.13 6.43 4.26
[3,] 42.54 31.91 11.15 6.44 4.23
[4,] 41.18 34.45 10.43 6.14 4.36
[5,] 43.11 33.01 10.20 6.20 4.23
[6,] 44.28 32.54 9.49 6.31 4.14
[7,] 44.47 31.96 9.21 6.81 4.00
}}
colnames、rownames に NULL を設定して名前を落とす
#myterm2(){{
> y <- as.matrix(x)
> y
Chrome Safari IE Firefox Edge
2018-06 41.96 31.83 11.50 6.63 4.29
2018-07 41.90 32.29 11.13 6.43 4.26
2018-08 42.54 31.91 11.15 6.44 4.23
2018-09 41.18 34.45 10.43 6.14 4.36
2018-10 43.11 33.01 10.20 6.20 4.23
2018-11 44.28 32.54 9.49 6.31 4.14
2018-12 44.47 31.96 9.21 6.81 4.00
> colnames(y) <- NULL
> rownames(y) <- NULL
> y
[,1] [,2] [,3] [,4] [,5]
[1,] 41.96 31.83 11.50 6.63 4.29
[2,] 41.90 32.29 11.13 6.43 4.26
[3,] 42.54 31.91 11.15 6.44 4.23
[4,] 41.18 34.45 10.43 6.14 4.36
[5,] 43.11 33.01 10.20 6.20 4.23
[6,] 44.28 32.54 9.49 6.31 4.14
[7,] 44.47 31.96 9.21 6.81 4.00
}}
#html(</div>)
*** XXXXXXXXX [#r3e784d5]
*** データフレームに列を追加する [#x4f45b22]
#html(<div style="padding-left: 10px;">)
#TODO
#html(</div>)
*** XXXXXXXXX [#v248942a]
*** データフレームに行を追加する [#t926b8ae]
#html(<div style="padding-left: 10px;">)
#TODO
#html(</div>)
*** XXXXXXXXX [#y85bc0e5]
*** データフレームで使用できる分析関数 [#u2526395]
#html(<div style="padding-left: 10px;">)
#TODO
#html(</div>)
#html(</div>)
** その他 [#y1563477]
#html(<div style="padding-left: 10px;">)
*** ワークスペースの使い方 [#zfb27d9e]
#html(<div style="padding-left: 10px;">)
Rでは作業中のワークスペースの状態をワークスペースに保存しておき、後から復元する事ができる。
変数 x, y, z を定義してRを終了(確認で y を入力)
#myterm2(){{
R
> x <- 1:10
> y <- 101:110
> z <- 201:210
> q()
Save workspace image? [y/n/c]: y
}}
再開
#myterm2(){{
R
.
.
[以前にセーブされたワークスペースを復帰します]
> ls()
[1] "x" "y" "z"
}}
R を --save または --no-save オプション付きで起動した場合は、Rの終了時に確認メッセージは表示されない。
※自動的に保存して(または保存しないで)終了する。
尚、変数 及び 履歴情報は作業ディレクトリ配下の .RData 及び .Rhistory というファイルに保存されている。
※これらのファイルを消せばワークスペースの状態を初期化できる。
#html(</div>)
*** コマンドラインから R のスクリプトを実行する [#u220a3d9]
#html(<div style="padding-left: 10px;">)
test.R
#mycode2(){{
x <- 1:10
cat(x)
}}
実行
#myterm2(){{
rscript test.R
1 2 3 4 5 6 7 8 9 10
}}
#html(</div>)
#html(</div>)