2015年5月7日木曜日

tcltk の OpenFile を使って csv を読み込む

R で csv ファイルの読み込みはちょっと面倒くさいと思いませんか?
[ファイル] → [ディレクトリの変更] で、その後はファイルがあるところまで入り込んで、ディレクトリを設定した後、read.csv() でファイル名を指定して、ようやく読み込むことができます。
ここまで何回もクリックしないといけないし、ディレクトリの設定とか初心者には難しいんじゃないかと思います。


どうせディレクトリの設定でファイルのあるところまで入り込んでいくなら、その1回でディレクトリもファイル名も取得したいと思ったので、以下のコードを作りました。


#作成日:2011/07/08
#作成者:T.Nakano
rm(list=ls())
gc();gc()

# ///////////////////////////////////////////////////////////////////////////////////////
# OpenFile を使ってディレクトリとデータファイルをファイル選択ボックスから指定する。
library(tcltk)
fileName <- tclvalue(tkgetOpenFile())
act1 <- unlist(strsplit(fileName,"/"))
act1 <- act1[-length(act1)]

directory <- NULL
if(length(act1)!=1){
for(i in 1:(length(act1)-1)){
directory <- paste(directory,act1[i],"/",sep="")
}
}
directory <- paste(directory,act1[length(act1)],sep="")
setwd(directory)
DT <- read.csv(fileName, header=T)

# directory : ディレクトリのパス
# DT : 読み込んだデータ
# read.○○○() はファイル形式に合わせて適宜変更すること


R を開いて、ディレクトリの設定をせずに上記のコードを実行します。
すると、



という画面が出てきます。
あとはご察しの通り、読み込みたい csv ファイルのあるところまで行って、ファイルを指定するだけです。
すると、DT にデータが読み込まれ、さらにファイルのあるフォルダがディレクトリとして設定されていると思います。