使用中のR環境の掃除と整理整頓に関するトリビア

  • 大きなデータを扱う予定だけれど、まずは、ちゃんと意図した通りに動くコマンドを作りたいとき
  • epicalcパッケージのチュートリアル(こちら)の第26章にそれが書かれているのでなぞってみよう
# 関数は残して、オブジェクトとデータフレームを全部なくしてからスタート
# 不要なものは片づけてから始める
zap()
# 『大きなデータの全体を使わずに』いろいろやってみるために大きいデータを仮に作ってみる
data1 <- rnorm(30000*160)
dim(data1) <- c(30000, 160)
data1 <- data.frame(id=1:30000, data1)
str(data1)

# 作ったデータに変数名などを割り当てる
namesVar <- NULL
for (i in letters[1:8])
{
for(j in 1:20){
	namesVar <- c(namesVar, paste(i, j, sep="."))
}
}
names(data1)[2:161] <- namesVar
namesVar <- NULL
for (i in letters[1:8])
{
	for(j in 1:20){
		namesVar <- c(namesVar, paste(i, j, sep="."))
	}
}
names(data1)[2:161] <- namesVar
attr(data1, "var.labels")[1] <- "ID number"
for(i in 2:161){
	attr(data1, "var.labels")[i] <- paste("Variable No.", i)
}
# 大きいデータができたので、
use(data1)
# このデータフレームの変数説明を見ようと思うとたくさんあるので、1画面に入らない
des(data1)
# 全部が見渡せないとどうなっているのか不安なので一部に絞って見てみる
des(select=1:20)
des(select=21:40)
des(select="a*")
des(select="a*")
# 30000標本のデータフレームだけれど、それを300標本にする
keepData(sample=300)
# 今、「使うことになっているデータフレーム」は300標本しか持っていないことを確認する
des(.data)
# 元の全データに戻すときは、オリジナルのdata1を使うと再宣言する
use(data1)
# 0-1の値を与えると、抜き取り標本数は「割合」で指定したことになる
keepData(sample=0.01)
# 条件指定もできる
keepData(subset=a.1 < 0)
des()
use(data1)
# 条件指定して、条件に合致したカラムを除くこともできる
# 変数a.1からg.20までを除く
keepData(exclude = a.1:g.20)
des()
use(data1)
# 以下は「4文字」の変数が除去される
keepData(exclude = "????")
des()