R の概観
2021-05-07
司馬博文
5/07/2021
6/05/2024
$ を持った構造体であり,Python の dictionary, Perl の hash table に似ている.$ は S3 の機能で,S4 は @ である.これはリストが本質的に R の実装の深いところに存在するデータ型だからである.
A Blog Entry on Bayesian Computation by an Applied Mathematician
$$
$$
R における行列 (matrix) は dim 属性を持ったベクトルであった.これと同様に,R におけるリストには names 属性があり,リストの各内容に名前をつける役割を持つ.そしてこの names 属性は$を使ってアクセスできる.
R におけるすべてのオブジェクトは class 属性を持っている.S3 におけるすべてのオブジェクトは class 属性を持つリストとして実装されているためである.オブジェクトが関数に呼ばれた際は,このclass属性の値を確認して,適切なメソッドが呼ばれる.
R.versionやhist()の返り値などは,breaks, countsオプションを持ったリストである.これはarrtibutes()あるいはstr()あるいは直うち,またはclass毎に誂えられた generic 関数であるprint()やsummary()で確認できる.
$names
[1] "platform" "arch" "os" "system"
[5] "status" "major" "minor" "year"
[9] "month" "day" "svn rev" "language"
[13] "version.string" "nickname"
$class
[1] "simple.list"
List of 14
$ platform : chr "aarch64-apple-darwin20"
$ arch : chr "aarch64"
$ os : chr "darwin20"
$ system : chr "aarch64, darwin20"
$ status : chr ""
$ major : chr "4"
$ minor : chr "4.0"
$ year : chr "2024"
$ month : chr "04"
$ day : chr "24"
$ svn rev : chr "86474"
$ language : chr "R"
$ version.string: chr "R version 4.4.0 (2024-04-24)"
$ nickname : chr "Puppy Cup"
- attr(*, "class")= chr "simple.list"
Length Class Mode
platform 1 -none- character
arch 1 -none- character
os 1 -none- character
system 1 -none- character
status 1 -none- character
major 1 -none- character
minor 1 -none- character
year 1 -none- character
month 1 -none- character
day 1 -none- character
svn rev 1 -none- character
language 1 -none- character
version.string 1 -none- character
nickname 1 -none- character
list(arg1,arg2,…)name=arg1とすると[[1]]ではなく$nameという名前付きで list にできる.names(list) <- c(“name1”,”name2”):後からタグ付けで参照できる.L[[1]]またはL$name:要素の参照,次元が違うのに注意.
[1]が行ベクトルを表す.それが[[1]], [[2]], ……と進んでく.$で参照した場合は,最初の数文字で予測できれば省略可能.各要素がベクトルであるリストのこと.従って明らかに縦にベクトル構造を持つ.対称ではないのは数学と同じ.
data.frame(…, colname=vector, …)
row.names(df) <- vector:行に名前をつける.names(df):すでについている名前
, 付きのオブジェクトで言及するとベクトルを得る.ベクトルオブジェクトで言及すると部分フレームを得る.(多分呼ばれてる関数が違う)
df[n]:\(n\) 列目を data-frame 列として得る
df[n,]:\(n\) 行目を data-frame 行として得る.df[,n]:\(n\) 列目を data-frame 行として得る.subset(x):切り出して使う.df[-n]:除外
df$Name:列の名前で indexing して,必ずベクトルを得る.[,drop=TRUE]:が隠れているので,これをFALSEにして強制的にdfを返すことができる.c(1,5)の代わりにc(Month,Day)で参照してもよく,$の後と同様””で String 型にする必要はない.