RStudioではじめるRプログラミング入門/Garrett Grolemund他を読み始めました。詰まったところや、気になったところをメモしていきます。
次回:「RStudioで始めるRプログラム入門」のメモ(3,4章)
#1章:基本中の基本
##Rは大文字と小文字を区別する
わかってればあたりまえのことかもしれない。
例えば2つのサイコロを転がすプログラムで
die <- 1:6
sample(die, 2, TRUE)
と書けばエラーを吐かずに正しく実行できるが、TRUEを小文字で書く、つまり
die <- 1:6
sample(die, 2, true)
と書くと
sample.int(length(x), size, replace, prob) でエラー:
オブジェクト 'true' がありません
というエラーが返ってくる。
##その他細かいこと
・対話モードで入力中にESCを押せばその行に書いたスクリプトを全部消せる
・ペインとは
pain、枠や区画という意味
PC用語としては、ウィンドウの中にある区画のことを指すらしい。この本を読むまで知らなかった…(無知)
#2章:パッケージとヘルプページ
##ベクトルの生成
P29で数値のベクトルを生成するとき、c関数を用いて
x <- c(-1, -0.8, -0.6, -0.4, -0.2, 0, 0.2, 0.4, 0.6, 0.8, 1)
と書かれているが、ちょっとめんどくさいので、同じことができる関数を探したところ
seq(a, b, by=c)
##aからbまでcの間隔でベクトルを生成
を用いれば良いことがわかった。つまり今回の場合は
x <- seq(-1,1,by=0.2)
> x
[1] -1.0 -0.8 -0.6 -0.4 -0.2 0.0 0.2 0.4 0.6 0.8 1.0
上記のようにできる。
##ベクトル(リスト)のプロット
ベクトル(pythonでいうところのリスト)をプロットするとき、対応する数を用意せずにプロットを実行しようとすると、Pythonの場合は、リストに収納されている要素の値と、値が何番目に入っているかという対応をプロットしていた。つまり以下のように
import matplotlib.pyplot as plt
x = [0,1,2,3,4,5,6]
plt.plot(x)
plt.show()
しかしRの場合はヒストグラムを返す。
つまり
> library("ggplot2")
> x <- c(0, 1, 2, 3, 4, 5, 6)
> qplot(x)
上記のようになる。これは少し新鮮だった。
###追記
どうやらプロットの方法は二種類あるらしい。教科書ではqplotを使っていたが、plotを使えば、以下のようにPythonと同じ挙動をする。
> library("ggplot2")
> x <- c(0, 1, 2, 3, 4, 5, 6)
> plot(x)
##”詐欺”には成功しているか?
何故か教科書は2個のサイコロの値の和で確率の偏りを評価しているが、もっと愚直にやってみた。
教科書のとおりに偏らせた6面サイコロを一1個振って、どの目がどれくらい出たか800000回の試行からヒストグラムを出す。これくらいやれば収束するはず。
> roll <- function(){
+ die <- 1:6
+ dice <- sample(die, 1, TRUE, prob = c(1/8, 1/8, 1/8, 1/8, 1/8 ,3/8))
+ dice}
> y <- replicate(800000, roll())
> qplot(y)
ちゃんと6の目が他の目より3倍出やすくなっている。これはちゃんと詐欺に使えそうだ。
##追記:Plotされたグラフ
グラフをプロットすると右下のペインに表示され、プロットを実行するたびにグラフが上書きされているように見えるが、実は全て一時的に保管されていて、ペインの右上にある"◀"と"▶"で前のグラフや次のグラフを見ることができる。箒のボタン(?)を押すと一時的に保管されているグラフがすべて消える。定期的にチェックしないと結構な容量になってしまいそう。