mirror of
https://github.com/adambard/learnxinyminutes-docs.git
synced 2025-08-06 14:56:54 +02:00
Updated the Japanese comment to be more understandable.
This commit is contained in:
@@ -11,18 +11,18 @@ lang: ja-jp
|
|||||||
|
|
||||||
|
|
||||||
R は統計計算用の言語です。
|
R は統計計算用の言語です。
|
||||||
データの取得やクリーニング、統計処理やグラフ作成をするために使える、たくさんのライブラリがあります。また、LaTeX文書からRコマンドを呼び出すこともできます。
|
データの取得やクリーニング、統計処理やグラフ作成をするために便利な、たくさんのライブラリがあります。また、LaTeX文書からRコマンドを呼び出すこともできます
|
||||||
|
|
||||||
|
|
||||||
```python
|
```python
|
||||||
# コメント行は、#で開始します
|
# コメント行は、#で開始します
|
||||||
|
|
||||||
|
|
||||||
# コメントを複数の行に分けたい場合は、
|
# 複数行をまとめてコメントにすることはできないので、
|
||||||
# このように、コメント行を複数連続させるとできます
|
# コメントを複数の行に分けたい場合、このように、単に毎行をコメントにしてください
|
||||||
|
|
||||||
|
|
||||||
# WindowsやMacでは、 COMMAND-ENTERで1行のコマンド実行ができます
|
# WindowsやMacでは、 COMMAND-ENTERで、コマンドを1行実行できます
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -79,7 +79,7 @@ stem(rivers)
|
|||||||
# 36 | 1
|
# 36 | 1
|
||||||
|
|
||||||
|
|
||||||
stem(log(rivers)) # このデータは、正規分布でも対数正規分布でもないので注意!
|
stem(log(rivers)) # このデータは、正規分布でも対数正規分布でもないので、注意!
|
||||||
# 特に正規分布原理主義のみなさん
|
# 特に正規分布原理主義のみなさん
|
||||||
|
|
||||||
|
|
||||||
@@ -175,8 +175,8 @@ rnorm(9)
|
|||||||
|
|
||||||
|
|
||||||
# ここからは、プログラミングをつかうチュートリアルです
|
# ここからは、プログラミングをつかうチュートリアルです
|
||||||
# この節ではRで重要なデータ型の、整数型、数字型、文字型、論理型と因子型をつかいます
|
# この節ではRで重要なデータ型(データクラス)の、整数型、数字型、文字型、論理型と因子(ファクター)型をつかいます
|
||||||
# 他にもいろいろありますが、まずは最小限必要な、これらから始めましょう
|
# 他にもいろいろありますが、これらの必要最小限なものから始めましょう
|
||||||
|
|
||||||
|
|
||||||
# 整数型
|
# 整数型
|
||||||
@@ -184,7 +184,7 @@ rnorm(9)
|
|||||||
5L # 5
|
5L # 5
|
||||||
class(5L) # "integer"
|
class(5L) # "integer"
|
||||||
# (?class を実行すると、class()関数について、さらなる情報が得られます)
|
# (?class を実行すると、class()関数について、さらなる情報が得られます)
|
||||||
# Rでは、この5Lのような単一の値は、長さ1のベクトルとして扱われます
|
# Rでは、この5Lのような1つの値は、長さ1のベクトルとして扱われます
|
||||||
length(5L) # 1
|
length(5L) # 1
|
||||||
# 整数型のベクトルはこのようにつくります
|
# 整数型のベクトルはこのようにつくります
|
||||||
c(4L, 5L, 8L, 3L) # 4 5 8 3
|
c(4L, 5L, 8L, 3L) # 4 5 8 3
|
||||||
@@ -221,7 +221,7 @@ class(-Inf) # "numeric"
|
|||||||
# 不正な計算は "not-a-number"になります
|
# 不正な計算は "not-a-number"になります
|
||||||
0 / 0 # NaN
|
0 / 0 # NaN
|
||||||
class(NaN) # "numeric"
|
class(NaN) # "numeric"
|
||||||
# 長さが1より大きなベクター同士で計算ができます
|
# 長さが1より大きなベクター同士の計算もできます
|
||||||
# どちらかが長い場合、短い方は何度も繰り返して使われます
|
# どちらかが長い場合、短い方は何度も繰り返して使われます
|
||||||
c(1,2,3) + c(1,2,3) # 2 4 6
|
c(1,2,3) + c(1,2,3) # 2 4 6
|
||||||
|
|
||||||
@@ -263,18 +263,18 @@ c('Z', 'o', 'r', 'r', 'o') == "Zorro" # FALSE FALSE FALSE FALSE FALSE
|
|||||||
c('Z', 'o', 'r', 'r', 'o') == "Z" # TRUE FALSE FALSE FALSE FALSE
|
c('Z', 'o', 'r', 'r', 'o') == "Z" # TRUE FALSE FALSE FALSE FALSE
|
||||||
|
|
||||||
|
|
||||||
# ファクター
|
# 因子(ファクター)
|
||||||
# ファクタークラスは、カテゴリカルデータ用のクラスです
|
# 因子型は、カテゴリカルデータ用の型です
|
||||||
# ファクターは、子供の学年のように順序がつけられるものか、性別のように順序がないものがあります
|
# 因子には、子供の学年のように順序がつけられるものか、性別のように順序がないものがあります
|
||||||
factor(c("female", "female", "male", "NA", "female"))
|
factor(c("female", "female", "male", "NA", "female"))
|
||||||
# female female male NA female
|
# female female male NA female
|
||||||
# Levels: female male NA
|
# Levels: female male NA
|
||||||
# "levels" は、カテゴリカルデータがとりうる値を返します
|
# "levels" は、カテゴリカルデータがとりうる値を返します
|
||||||
levels(factor(c("male", "male", "female", "NA", "female"))) # "female" "male" "NA"
|
levels(factor(c("male", "male", "female", "NA", "female"))) # "female" "male" "NA"
|
||||||
# ファクターベクターの長さが1ならば、そのlevelも1です
|
# 因子ベクターの長さが1ならば、そのlevelも1です
|
||||||
length(factor("male")) # 1
|
length(factor("male")) # 1
|
||||||
length(levels(factor("male"))) # 1
|
length(levels(factor("male"))) # 1
|
||||||
# ファクターは、この後で紹介するデータフレーム(というデータ型)内で、よくみられます
|
# 因子型は、この後で紹介するデータフレーム(というデータ型)内で、よくみられます
|
||||||
data(infert) # "Infertility after Spontaneous and Induced Abortion"
|
data(infert) # "Infertility after Spontaneous and Induced Abortion"
|
||||||
levels(infert$education) # "0-5yrs" "6-11yrs" "12+ yrs"
|
levels(infert$education) # "0-5yrs" "6-11yrs" "12+ yrs"
|
||||||
|
|
||||||
@@ -379,7 +379,7 @@ jiggle(5) # 5±ε. set.seed(2716057)をすると、jiggle(5)==5.005043
|
|||||||
# 1次元
|
# 1次元
|
||||||
|
|
||||||
|
|
||||||
# まずは基本からです。すでにご存じのベクターからです
|
# まずは基本からです。ご存じベクターからです
|
||||||
vec <- c(8, 9, 10, 11)
|
vec <- c(8, 9, 10, 11)
|
||||||
vec # 8 9 10 11
|
vec # 8 9 10 11
|
||||||
# 特定の要素を、[角括弧]による指定で取り出せます
|
# 特定の要素を、[角括弧]による指定で取り出せます
|
||||||
@@ -400,7 +400,7 @@ any(vec == 10) # TRUE
|
|||||||
vec[6] # NA
|
vec[6] # NA
|
||||||
# ベクターの長さは、length()で取得できます
|
# ベクターの長さは、length()で取得できます
|
||||||
length(vec) # 4
|
length(vec) # 4
|
||||||
# ベクター全体、または一部に対して、操作ができます
|
# ベクター全体、または1部に対して、操作ができます
|
||||||
vec * 4 # 16 20 24 28
|
vec * 4 # 16 20 24 28
|
||||||
vec[2:3] * 5 # 25 30
|
vec[2:3] * 5 # 25 30
|
||||||
any(vec[2:3] == 8) # FALSE
|
any(vec[2:3] == 8) # FALSE
|
||||||
@@ -411,7 +411,7 @@ sd(vec) # 1.290994
|
|||||||
max(vec) # 11
|
max(vec) # 11
|
||||||
min(vec) # 8
|
min(vec) # 8
|
||||||
sum(vec) # 38
|
sum(vec) # 38
|
||||||
# 他にも、ベクター関連ではいろいろな関数があります
|
# 他にも、ベクター関連ではいろいろな関数があります。以下はベクターをつくるための方法です
|
||||||
5:15 # 5 6 7 8 9 10 11 12 13 14 15
|
5:15 # 5 6 7 8 9 10 11 12 13 14 15
|
||||||
seq(from=0, to=31337, by=1337)
|
seq(from=0, to=31337, by=1337)
|
||||||
# =>
|
# =>
|
||||||
@@ -422,7 +422,7 @@ seq(from=0, to=31337, by=1337)
|
|||||||
# 2次元配列 (すべての値が同じ型の場合)
|
# 2次元配列 (すべての値が同じ型の場合)
|
||||||
|
|
||||||
|
|
||||||
# 同じ型の値が含まれる配列は、このように作れます
|
# 同じ型の値が含まれる2次元配列は、このように作れます
|
||||||
mat <- matrix(nrow = 3, ncol = 2, c(1,2,3,4,5,6))
|
mat <- matrix(nrow = 3, ncol = 2, c(1,2,3,4,5,6))
|
||||||
mat
|
mat
|
||||||
# =>
|
# =>
|
||||||
@@ -430,7 +430,7 @@ mat
|
|||||||
# [1,] 1 4
|
# [1,] 1 4
|
||||||
# [2,] 2 5
|
# [2,] 2 5
|
||||||
# [3,] 3 6
|
# [3,] 3 6
|
||||||
# ベクターとは違い、配列のクラス名は"matrix"です。
|
# ベクターとは違い、2次元配列の型名は"matrix"です。
|
||||||
class(mat) # => "matrix"
|
class(mat) # => "matrix"
|
||||||
# 最初の行
|
# 最初の行
|
||||||
mat[1,] # 1 4
|
mat[1,] # 1 4
|
||||||
@@ -440,7 +440,7 @@ mat[1,] # 1 4
|
|||||||
mat[3,2] # 6
|
mat[3,2] # 6
|
||||||
|
|
||||||
|
|
||||||
# 配列全体を転置します
|
# 2次元配列全体を転置します
|
||||||
t(mat)
|
t(mat)
|
||||||
# =>
|
# =>
|
||||||
# [,1] [,2] [,3]
|
# [,1] [,2] [,3]
|
||||||
@@ -448,7 +448,7 @@ t(mat)
|
|||||||
# [2,] 4 5 6
|
# [2,] 4 5 6
|
||||||
|
|
||||||
|
|
||||||
# 配列の積
|
# 2次元配列の積
|
||||||
mat %*% t(mat)
|
mat %*% t(mat)
|
||||||
# =>
|
# =>
|
||||||
# [,1] [,2] [,3]
|
# [,1] [,2] [,3]
|
||||||
@@ -457,7 +457,7 @@ mat %*% t(mat)
|
|||||||
# [3,] 27 36 45
|
# [3,] 27 36 45
|
||||||
|
|
||||||
|
|
||||||
# cbind() は、複数のベクターを、別々の列に並べて配列を作ります
|
# cbind() は、複数のベクターを、別々の列に並べて2次元配列を作ります
|
||||||
mat2 <- cbind(1:4, c("dog", "cat", "bird", "dog"))
|
mat2 <- cbind(1:4, c("dog", "cat", "bird", "dog"))
|
||||||
mat2
|
mat2
|
||||||
# =>
|
# =>
|
||||||
@@ -467,19 +467,19 @@ mat2
|
|||||||
# [3,] "3" "bird"
|
# [3,] "3" "bird"
|
||||||
# [4,] "4" "dog"
|
# [4,] "4" "dog"
|
||||||
class(mat2) # matrix
|
class(mat2) # matrix
|
||||||
# ここでいま一度、型について注意してください!
|
# ここでいま1度、2次元配列内の型について注意してください!
|
||||||
# 配列にある値は、すべて同じ型にする必要があります。そのため、すべて文字型に変換されています
|
# 2次元配列にある値は、すべて同じ型にする必要があります。そのため、すべて文字型に変換されています
|
||||||
c(class(mat2[,1]), class(mat2[,2]))
|
c(class(mat2[,1]), class(mat2[,2]))
|
||||||
|
|
||||||
|
|
||||||
# rbind() は、複数のベクターを、別々の行に並べて配列を作ります
|
# rbind() は、複数のベクターを、別々の行に並べて2次元配列を作ります
|
||||||
mat3 <- rbind(c(1,2,4,5), c(6,7,0,4))
|
mat3 <- rbind(c(1,2,4,5), c(6,7,0,4))
|
||||||
mat3
|
mat3
|
||||||
# =>
|
# =>
|
||||||
# [,1] [,2] [,3] [,4]
|
# [,1] [,2] [,3] [,4]
|
||||||
# [1,] 1 2 4 5
|
# [1,] 1 2 4 5
|
||||||
# [2,] 6 7 0 4
|
# [2,] 6 7 0 4
|
||||||
# 全ての値は同じ型になります。この例の場合は、強制変換がされないのでよかったです
|
# 全ての値は同じ型になります。上記例は幸い、強制変換がされないものでした
|
||||||
|
|
||||||
|
|
||||||
# 2次元配列 (いろいろな型を含む場合)
|
# 2次元配列 (いろいろな型を含む場合)
|
||||||
@@ -506,16 +506,16 @@ students
|
|||||||
# 6 Ginny -1 G
|
# 6 Ginny -1 G
|
||||||
class(students$year) # "numeric"
|
class(students$year) # "numeric"
|
||||||
class(students[,3]) # "factor"
|
class(students[,3]) # "factor"
|
||||||
# 次元の数をみます
|
# 行と列の数をみます
|
||||||
nrow(students) # 6
|
nrow(students) # 6
|
||||||
ncol(students) # 3
|
ncol(students) # 3
|
||||||
dim(students) # 6 3
|
dim(students) # 6 3
|
||||||
# このdata.frame() 関数は、デフォルトでは文字列ベクターをファクターのベクターに変換します
|
# このdata.frame() 関数は、デフォルトでは文字列ベクターを因子ベクターに変換します
|
||||||
# stringsAsFactors = FALSE に設定してからデータフレームを作成すると、変換されません
|
# stringsAsFactors = FALSE に設定してからデータフレームを作成すると、変換されません
|
||||||
?data.frame
|
?data.frame
|
||||||
|
|
||||||
|
|
||||||
# データフレームの一部を取り出すには、いろいろな(変な)、似たような方法があります
|
# データフレームの1部を取り出すには、いろいろな(変な)、似たような方法があります
|
||||||
students$year # 3 2 2 1 0 -1
|
students$year # 3 2 2 1 0 -1
|
||||||
students[,2] # 3 2 2 1 0 -1
|
students[,2] # 3 2 2 1 0 -1
|
||||||
students[,"year"] # 3 2 2 1 0 -1
|
students[,"year"] # 3 2 2 1 0 -1
|
||||||
@@ -594,7 +594,7 @@ students
|
|||||||
# 6: Draco 0 S
|
# 6: Draco 0 S
|
||||||
|
|
||||||
|
|
||||||
# 行を消す場合は、データテーブルから、一部を除くことによってできます
|
# データテーブルから行を消す場合は、以下のように除く行を指定すればできます
|
||||||
students[studentName != "Draco"]
|
students[studentName != "Draco"]
|
||||||
# =>
|
# =>
|
||||||
# house studentName year
|
# house studentName year
|
||||||
@@ -603,7 +603,7 @@ students[studentName != "Draco"]
|
|||||||
# 3: G Ginny -1
|
# 3: G Ginny -1
|
||||||
# 4: H Cedric 3
|
# 4: H Cedric 3
|
||||||
# 5: R Cho 1
|
# 5: R Cho 1
|
||||||
# データフレームの場合も同様
|
# データフレームの場合も同様です
|
||||||
students <- as.data.frame(students)
|
students <- as.data.frame(students)
|
||||||
students[students$house != "G",]
|
students[students$house != "G",]
|
||||||
# =>
|
# =>
|
||||||
@@ -616,15 +616,15 @@ students[students$house != "G",]
|
|||||||
# 多次元 (すべての値が同じ型の場合)
|
# 多次元 (すべての値が同じ型の場合)
|
||||||
|
|
||||||
|
|
||||||
# 配列でN次元の表を作ります
|
# 配列を並べて、N次元の表を作ります
|
||||||
# すべての値は同じ型にする必要があります
|
# 配列なので、すべての値は同じ型にする必要があります
|
||||||
# この方法で、配列のような2次元表も作成可能です
|
# ちなみに、以下のようにすれば2次元配列・2次元表も作成可能です
|
||||||
array(c(c(1,2,4,5),c(8,9,3,6)), dim=c(2,4))
|
array(c(c(1,2,4,5),c(8,9,3,6)), dim=c(2,4))
|
||||||
# =>
|
# =>
|
||||||
# [,1] [,2] [,3] [,4]
|
# [,1] [,2] [,3] [,4]
|
||||||
# [1,] 1 4 8 3
|
# [1,] 1 4 8 3
|
||||||
# [2,] 2 5 9 6
|
# [2,] 2 5 9 6
|
||||||
# 配列から3次元行列を作ることもできます
|
# 2次元配列を並べて、3次元配列を作ることもできます
|
||||||
array(c(c(c(2,300,4),c(8,9,0)),c(c(5,60,0),c(66,7,847))), dim=c(3,2,2))
|
array(c(c(c(2,300,4),c(8,9,0)),c(c(5,60,0),c(66,7,847))), dim=c(3,2,2))
|
||||||
# =>
|
# =>
|
||||||
# , , 1
|
# , , 1
|
||||||
@@ -642,7 +642,7 @@ array(c(c(c(2,300,4),c(8,9,0)),c(c(5,60,0),c(66,7,847))), dim=c(3,2,2))
|
|||||||
# [3,] 0 847
|
# [3,] 0 847
|
||||||
|
|
||||||
|
|
||||||
# リスト(多次元、不完全なのか複数の型が使われているもの)
|
# リスト(多次元、不完全または複数の型が使われているもの)
|
||||||
|
|
||||||
|
|
||||||
# ついにRのリストです
|
# ついにRのリストです
|
||||||
@@ -656,13 +656,13 @@ list1[[1]] # また別の方法
|
|||||||
# =>
|
# =>
|
||||||
# [1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
|
# [1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
|
||||||
# [34] 34 35 36 37 38 39 40
|
# [34] 34 35 36 37 38 39 40
|
||||||
# 他のベクターと同じく、一部を取り出すことができます
|
# 他のベクターと同じく、1部を取り出すことができます
|
||||||
list1$price[4]
|
list1$price[4]
|
||||||
|
|
||||||
|
|
||||||
# リストは、Rで一番効率的なデータ型ではありません
|
# リストは、Rで1番効率的なデータ型ではありません
|
||||||
# なにか特別な理由がない限りは、データフレームを使い続けるべきです
|
# 特別な理由がない限りは、リストの代わりにデータフレームを使うべきです
|
||||||
# リストは、線形回帰関数の返値として、しばしば使われます
|
# リストは、線形回帰関数の返値として、しばしば使われています
|
||||||
|
|
||||||
|
|
||||||
##################################################
|
##################################################
|
||||||
@@ -677,18 +677,18 @@ mat
|
|||||||
# [1,] 1 4
|
# [1,] 1 4
|
||||||
# [2,] 2 5
|
# [2,] 2 5
|
||||||
# [3,] 3 6
|
# [3,] 3 6
|
||||||
# apply(X, MARGIN, FUN) は、行列Xの行(MARGIN=1)または列(MARGIN=2)に対して、関数FUNを実行します
|
# apply(X, MARGIN, FUN) は、行列Xの行(MARGIN=1で指定)または列(MARGIN=2で指定)に対して、関数FUNを実行します
|
||||||
# RでこのようにXの全行か全列に関数を実行すると、forやwhileループを使うより、遥かに速くできます
|
# Rで、このように指定してXの全行または全列に関数を実行するのは、forやwhileループを使うよりも、遥かに速いです
|
||||||
apply(mat, MAR = 2, jiggle)
|
apply(mat, MAR = 2, jiggle)
|
||||||
# =>
|
# =>
|
||||||
# [,1] [,2]
|
# [,1] [,2]
|
||||||
# [1,] 3 15
|
# [1,] 3 15
|
||||||
# [2,] 7 19
|
# [2,] 7 19
|
||||||
# [3,] 11 23
|
# [3,] 11 23
|
||||||
# 他にも関数があります。?lapply, ?sapply で確認してみてください
|
# 他にも便利な関数があります。?lapply, ?sapply で確認してみてください
|
||||||
|
|
||||||
|
|
||||||
# このやり方がちょっとややこしいという事は、みんな同意です。なので、あまり怖がりすぎないでください
|
# apply()系関数の使い方は、ちょっとややこしいです(みんなそう思ってます)。なので、あまり怖がりすぎないでください
|
||||||
|
|
||||||
|
|
||||||
# plyr パッケージは、*apply() 系の関数を置き換えて(さらに改善して)いこうとしています
|
# plyr パッケージは、*apply() 系の関数を置き換えて(さらに改善して)いこうとしています
|
||||||
@@ -731,25 +731,25 @@ write.csv(pets, "pets2.csv") # 新しくcsvファイルを作ります
|
|||||||
#########################
|
#########################
|
||||||
|
|
||||||
|
|
||||||
# 組み込みのプロット関数です
|
# Rに組込まれているプロット関数をつかいます
|
||||||
# 散布図です!
|
# 散布図!
|
||||||
plot(list1$time, list1$price, main = "fake data")
|
plot(list1$time, list1$price, main = "fake data")
|
||||||
# 回帰図です!
|
# 回帰図!
|
||||||
linearModel <- lm(price ~ time, data = list1)
|
linearModel <- lm(price ~ time, data = list1)
|
||||||
linearModel # outputs result of regression
|
linearModel # outputs result of regression
|
||||||
# 回帰直線を既存の図上に引きます
|
# 回帰直線を既存の図上に引きます
|
||||||
abline(linearModel, col = "red")
|
abline(linearModel, col = "red")
|
||||||
# いろいろな診断方法を見ましょう
|
# いろいろな散布図をつくって、確認できます
|
||||||
plot(linearModel)
|
plot(linearModel)
|
||||||
# ヒストグラムです!
|
# ヒストグラム!
|
||||||
hist(rpois(n = 10000, lambda = 5), col = "thistle")
|
hist(rpois(n = 10000, lambda = 5), col = "thistle")
|
||||||
# 棒グラフです!
|
# 棒グラフ!
|
||||||
barplot(c(1,4,5,1,2), names.arg = c("red","blue","purple","green","yellow"))
|
barplot(c(1,4,5,1,2), names.arg = c("red","blue","purple","green","yellow"))
|
||||||
|
|
||||||
|
|
||||||
# GGPLOT2
|
# GGPLOT2
|
||||||
# 上記よりも、もっときれいな図を描くこともできます
|
# 上記の組込み関数を使うよりも、もっときれいな図を描くこともできます
|
||||||
# より多くよい図を描くために、ggplot2 パッケージを使ってみましょう
|
# ggplot2 パッケージを使って、より多くのよい図を描いてみましょう
|
||||||
install.packages("ggplot2")
|
install.packages("ggplot2")
|
||||||
require(ggplot2)
|
require(ggplot2)
|
||||||
?ggplot2
|
?ggplot2
|
||||||
@@ -772,4 +772,4 @@ pp + geom_point()
|
|||||||
|
|
||||||
|
|
||||||
* RとR GUIはこちら [http://www.r-project.org/](http://www.r-project.org/)
|
* RとR GUIはこちら [http://www.r-project.org/](http://www.r-project.org/)
|
||||||
* [RStudio](http://www.rstudio.com/ide/) はまた別のGUIです
|
* [RStudio](http://www.rstudio.com/ide/) 別のGUI
|
Reference in New Issue
Block a user