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