作業スペース
作業スペースとはそのときのR作業環境とユーザ定義のオブジェクト (ベクトル、行列、データフレーム、リスト、関数など) を含めたものである。セッションを終えるときにそのときの作業スペースのイメージを保存することができる。そして次にRを起動したときに自動的に読み込まれる。Rではプロンプトに対してインタラクティブにコマンドを入力する。上矢印キー と 下矢印キー スクロールし、コマンド履歴を見ることができる。
異なるプロジェクトは異なるディレクトリで管理したいということがあるかもしれなお。ここでは作業スペース管理の基本的なコマンドを紹介する。
Winwosユーザーへの注意
R 以下のようなコードはエラーがおきる。
c:\mydocuments\myfile.txt
R ではバックスラッシュ "\" をエスケープ文字として認識するからである。
以下のようなコードをつかうべし。
c:/mydocuments/myfile.txt
getwd() # そのときの作業ディレクトリ
ls() # 作業スペースのオブジェクトをリストで出力
browseEnv() # htmlでオブジェクト出力。便利
dir() # 作業ディレクトリ内のファイル名を列挙。list.files() と同じ。 setwd() # 作業ディレクトリを変える
# セッション内のオプションの閲覧と設定
help(options) # 設定可能なオプション
options() # そのときのオプション設定s
options(digits=3) # 出力の小数点桁数を変えた
# これまで入力したコマンドを見る
history() # 直近25コマンド
history(max.show=Inf) # 全てのコマンド
# コマンド履歴を保存
savehistory(file="myfile") # デフォルトのファイル名は ".Rhistory"
# 保存したコマンド履歴を呼び出す
loadhistory(file="myfile")
# デフォルトのファイル名は ".Rhistory"
# コンソールの内容 (命令、出力) を全て保存する
ファイル -> ファイルの保存
編集 -> 全て選択 しエディタ等に貼り付ける
# 作業スペースをそのときの作業ディレクトリに.RDataという名前のファイルで保存する
save.image()
# もちろんファイル名を指定することもできる。パスを指定しないと作業ディレクトリに保存される
save.image("rws001.rdata")
save(object list,file="myfile.RData")
オブジェクトの入出力
# オブジェクトの保存と読み込み
save(dat, file="dataobj.Rdata")
load("dataobj.Rdata")
# これだけでdatというオブジェクト (保存時のオブジェクト名) が生成される。
# 別のオブジェクト名でにしたい場合は
x <- load("dataobj.rdata") # (x, file="dataobj.Rdata") は誤り。
rm(dat) # 作業スペースからオブジェクトを削除
# オブジェクトを日付・時間つきのファイル名で保存する。
save(iris, file=paste("iris", gsub(":", "_", Sys.time()), ".rdata", sep=""))
# 作業環境のオブジェクトをclassつきでリストにする
objlist <- sapply(ls(), function(x) class(get(x)))
## classが各1つずつのときはベクトル、複数もつものがあるときはリストで格納
(objnames <- names(objlist)) # オブジェクト一覧
(clstbl <- table(unlist(objlist))) # class一覧
# classが"data.frame"のオブジェクトだけまとめる
dfobjname <- names(objlist)[c(grep("data.frame", objlist))]
# "data.frame"オブジェクトの名前をとりだす。"lm", "aov"などとすれば、それぞれのオブジェクトを列挙できる
dflist <- list()
for(i in 1:length(dfobjname)) {
dflist[[i]] <- get(dfobjname[i]) # リスト化
}
names(dflist) <- dfobjname # リストの要素名をデータフレーム名にする
dflist
names(dflist)
# データフレームオブジェクトを調べ、全て日付つきでcsvで保存する
for ( i in 1:length(dfobjname)) {
write.csv(get(dfobjname[i]), file=paste(dfobjname[i], "_", Sys.Date(), ".csv", sep=""), quote=FALSE)
}
# Rオブジェクトとして保存
# 保存用ディレクトリの作成
dirnm <- "dfobj/"
dir.create(dirnm)
for ( i in 1:7) {
x <- get(dfobjname[i])
fnm <- paste(dirnm, "dtfr_", dfobjname[i], "_", Sys.Date(),".rdata", sep="") # "dtfr"をつけてデータフレームであるとメモしておく
save(x, file=fnm)
}
# 作業スペースをロードする。
load("myfile.RData")
q() # Rを終了する。作業スペースを保存するかダイアログが表示される。
参考サイト