R Programing - Week1

Posted: April 15, 2015

ずっとやらずに放置してきたR言語だったけど、ようやく先週からcourseraのR Programmingという授業を始めてみた。

コースのWeek1のメモ。

Rの型

基本の型

文字列 character
実数 number
整数 integer
複素数 complex 
真偽値 logical  (= boolean)

実数(number)

属性

ベクトル値

    > x <- c("a", "b", "c")
    > x
    [1] "a" "b" "c"
    > x <- vector("numeric", length = 10)
    > x
    [1] 0 0 0 0 0 0 0 0 0 0
    > as.numeric(x)
    > as.logical(x)
    > as.character(x)

リスト

マトリックス(行列)

    > m <- matrix(nrow = 2, ncol = 3)
    > m <- matrix(1:6, nrow = 2, ncol = 3)
    > m
        [,1] [,2] [,3]
    [1,] 1 3 5
    [2,] 2 4 6
    > m <- 1:10
    > dim(m) <- c(2, 5)
    > m
        [,1] [,2] [,3] [,4] [,5]
    [1,] 1 3 5 7 9
    [2,] 2 4 6 8 10

ファクター(因子)

欠損値

データフレーム

名前

ファイルの読み書き

read.table <-> write.table // 表形式データ
read.csv <-> write.csv     // カンマ区切り
readLines <-> writeLines   // 一行づつ読み込み
source <-> dump            // Rのソースコード
dget <-> dput              //  単一のオブジェクトの読み書き
load <-> save              // 複数のオブジェクトの読み書き
unserialize <-> serialize  // ?

read.tableで読み込むときのオプション指定

- file = (string)ファイル名
- header = (logical)ヘッダー行の有無
- sep = (char)区切り文字
- colClasses = 
- nrows = (int)行数
- comment.char = (char)コメント文字
- skip = (int)読み込みを飛ばす行数
- stringsAsFactors = (logical)文字列型をファクターとして読み込むかどうか

データ量が少ない場合は、オプション無しのファイル名だけで良い

x <- read.table(“data.txt")

read.table()のデフォルトの挙動は以下のとおり

read.csv()は区切り文字がカンマになっていること以外は、read.table()と同じ

read.table(file, sep=",")

データ量が大きい場合

initial <- read.table("datatable.txt", nrows = 100) // 100行だけまず読み込む
classes <- sapply(initial, class)  // 型の判定結果を保存
tabAll <- read.table("datatable.txt”, colClasses = classes) // 100行だけ推定した型を使用して、全行読み込む

メモリ使用量について

1,500,000 * 120 * 8byte(64bitOSのnumeric型の場合)
= 1440000000byte 
= 1440000000 / 2^20 MB1,373MB 
≒ 1.34GB

実際には↑のデータ以外にもメモリを必要とする。だいたい、必要データ数の2倍くらい必要となるため、上記のデータをメモリ2GBのパソコンで読み込もうとするとメモリ不足となってしまう。

ファイル