R のオブジェクトについてのまとめ

    はじめに

    最近, R 言語を学び始めた. データ型について整理してみた.

    Atomic Classes of Objects

    R には 5 つのアトミックなオブジェクトがある.

    • charactor
    • numeric (real number)
    • integer
    • complex
    • ligical (true/false)

    Basic Objects

    もっとも基本的なオブジェクトは vector.

    vetor

    c で vector を生成する.

    a <- c (0.5, 0.6)    # numeric
    b <- c (TRUE, FALSE) # logial
    c <- 0:5             # integer     
    d <- c ("a", "b", "c") #chalactor

    型の混合も許す. tuple のような機能も併せ持つ.

    a <- (1,7, "a")
    b <- (TRUE, "a")
    x <- 0:6
    class (x)
    integer

    list

    vector の特殊な形. 異なる型の vector を一つにまとめる.

    x <- list (1, "a", TRUE, 1 + 4i)
    x
    1   a   TRUE    1+4i

    Matrices

    次元の性質をもつ vector. matrix 関数で生成.

    m <- matrix (nrow = 2, ncol = 3)
    m
    nil nil nil
    nil nil nil
    m <- matrix (1:6, nrow = 2, ncol = 3)
    m
    1   3   5
    2   4   6

    dim

    dim 関数をつかうと vector に 次元の性質を与えることができる.

    m <- 1:10
    dim (m) <- c (2,5)
    m
    1   3   5   7   9
    2   4   6   8   10

    cbind-ing and rbind-ing

    cbind, rbind を利用しても, vector から matrix を生成できる.

    x <- 1:3
    y <- 10:12
    cbind (x, y)
    1  10
    2  11
    3  12
    rbind (x,y)
    1   2   3
    10  11  12

    Factors

    vector の特殊なかたち. categorical data を扱う.

    integer vector について, それぞれの integer に label があるようなもの.

    enum 列挙型 ともいえる.factor 関数で作成.

    x <- factor (c ("yes", "no", "no", "yes", "no"), labels = c ("yes", "no"))
    table (x)
    yes 3
    no  2

    Data Frame

    list の特殊なかたち. list の list.

    • list のなかのすべての list が同じ length をもつ必要がある.

    • list の中の list は column とみなされる.

    • list の中の各要素の番号は row とみなされる.

    • 通常は, rad.table (), read.csv によって生成される.

    • data.matrix (x) によって matrix 型に変換できる.

    x <- data.frame (foo = 1:4, bar = c (T,T,F,F))
    1   TRUE
    2   TRUE
    3   FALSE
    4   FALSE

    names

    オブジェクトには名前をつけることができる. 可読性を向上させる.

    x <- 1:3
    names (x) <- c ("foo", "bar", "norf")
    x <- 1:3
    names (x) <- c ("foo", "bar", "norf")
    
    m <- matrix (1:4 nrow = 2, ncol = 2)
    dimname (m) <- list (c ("a", "b"), c ("c", "d"))

    Subsetting: 部分集合

    サブセット (部分集合).

    vector

    x <- c ("a", "b", "c", "c", "d", "a")
    x[1:4]
    a
    b
    c
    c

    条件を指定して, 部分を抽出することができる.

    x[x > "a"]
    b
    c
    c
    d

    list

    x <- list (foo = 1:4, bar = 0.6)
    
    # index で指定
    x[1]
    
    # $で指定
    x$bar

    Marix

    x <- matrix (1:6, 2, 3)
    1   3   5
    2   4   6

    , を利用することで, 行や列だけを vector として抽出.

    x[1,]
    1
    3
    5

    NA Values を取り除く

    complete.cases で調べる.

    x <- c (1, 2, NA, 4, NA, 5)
    y <- c ("a", "b", NA, "d", NA, "f")
    good <- complete.cases (x, y)
    good
    TRUE
    TRUE
    FALSE
    TRUE
    FALSE
    TRUE
    x[good]

    Operations

    vector

    x <- 1:4, y <- 4:9
    x + y
    x * y
    x / y
    x <- matrix (1:4, 2, 2) 
    1   3
    2   4

    matrix

    y <- matrix (rep (10, 4), 2, 2)
    10  10
    10  10
    x * y
    10  30
    20  40