R入門」 第3章:オブジェクト、 そのモードと属性

「R入門」
第3章:オブジェクト、そのモードと属性
発表日:10月17日
担当者:脇坂恭志郎
Rの処理対象
ーオブジェクトー
Rが処理する対象
モード:基本的構成物の基本的な型
・数値ベクトル
・複素数ベクトル
・論理値ベクトル
・文字列ベクトル
(モードからなる)
※ベクトル内は必ず「論理」、「数値」、「複素数」、もしくは
「文字」のいずれか一つで構成されなければならない。
例外は、利用できない量を表すNA。ベクトルは中身が
空であってもモードを持つ。 → character(0), numeric(0)
再帰的(recursive)構造
・リスト(lists):
順序付けられたオブジェクトの集まりからなるモード。
構成要素自身がリストになり得る再帰的構造をもつ。
成分は同じモード・型である必要はない。(6章参照)
ex. Lst <- list (name=“T_Fujii”, age=21)
・関数(function)
・表現式(expression)
→ 説明は後に譲る…
オブジェクトの本質的属性
・モード(mode):
オブジェクトの型を表す。
・長さ(length):
オブジェクトの型の長さを表す。
ex. z <- c(1,2,3,4,5) において、
mode(z) = “numeric”
length(z) = 3 …となる。
※これら二つはオブジェクトの本質的属性と呼ばれている。
モードの変更
・as.something() 形式:
あるモードから他のモードへと強制変換する関数。
また、オブジェクトが所有してないモードを与える。
ex. z <- 0:9 において、
digits <- as.character(z) とおくと、
digitsは文字ベクトル c(“0”,”1”,”2”…“9”) となり、
d <- as.integer(digits)
とおくと、数値ベクトル 0,1,2,…,9 となる。
※他にも色々なモード変更関数が存在する…
オブジェクトの長さ変更
・オブジェクトを長くする
①空のベクトルを作成。(ここでは数値モードを選択)
e <- numeric()
②以前の範囲の外部の添字値を与える
e[5] <- 12 ※ e[1]~e[4]=NA, e[5]=12
e[7] <- 3
※ e[1]~e[4]=NA, e[5]=12, e[6]=NA, e[7]=3
・オブジェクトの長さを切り詰める
①残す範囲の付値を与える
e <- e[1:6]
※ e[1]~e[4]=NA, e[5]=12, e[6]=NA
e <- e[3:5]
※ e[1]=NA, e[2]=NA, e[3]=12
属性を得る・変える
・attributes(object) :
オブジェクトに対し、現在定義されてるすべての
非本質的属性のリストを与える関数。
・attr(object, name) :
オブジェクトに対し、特定の非本質的属性を
与える関数。
また、クラス(class)という特別な属性をもつオブジェクトも、unclass() を
使えば一時的にその属性効果が消える。 →主に総称的関数使用時
問題!
以下の三問の動作を確認せよ…
① list (name=“Fujii”, age=21, birthday=“25,Feb”) の
本質的属性(モードと長さ)はどう表示されるか?
② ①を文字ベクトルに変換すると、どう表示されるか
③ 文字ベクトルを作成し、e[5]=“ふ” e[10]=“じ” e[15]=“い”
とした時、オブジェクトの長さをうまく切り詰めて、文字を
一続きに表示させよ。