1

私は十分に簡単なはずだと思うことをしようとしていますが、これまでのところそれを理解することができませんでした(当然のことながら私は初心者です)...

Rで入力ファイルの入力をユーザーに求めることができるようにしたいと思います。以前はfile.choose()1つのファイルを取得できましたが、一度に複数のファイルを選択するオプションが必要です。

私は、同じヘッダーを使用して日次データファイルを取り込み、それらを1つの大きな月次ファイルに追加するプログラムを作成しようとしています。ファイルを個別にインポートしてからを使用することでコンソールでそれを行うことができますがrbind(file1, file2,...)、プロセスを自動化するためのスクリプトが必要です。追加するファイルの数は、実行間で必ずしも一定ではありません。

ありがとう

更新:ここで私が思いついたコードは私のために機能します、多分それは他の誰かにも役立つでしょう

library (tcltk)
File.names <- tk_choose.files()   #Prompts user for files to be combined
Num.Files <-NROW(File.names)      # Gets number of files selected by user

# Create one large file by combining all files
Combined.file <- read.delim(File.names [1], header=TRUE, skip=2) #read in first file of list selected by user
for(i in 2:Num.Files){
                      temp <- read.delim(File.names [i], header=TRUE, skip=2) #temporary file reads in next file
                      Combined.file <-rbind(Combined.file, temp)              #appends Combined file with the last file read in
                      i<-i+1
}
output.dir <- dirname(File.names [1])  #Finds directory of the files that were selected

setwd(output.dir)                      #Changes directory so output file is in same             directory as input files
output <-readline(prompt = "Output Filename: ")       #Prompts user for output file name
outfile.name <- paste(output, ".txt", sep="", collapse=NULL)
write.table(Combined.file, file= outfile.name, sep= "\t", col.names = TRUE, row.names=FALSE)` #write tab delimited text file in same dir that original files are in
4

2 に答える 2

2

やってみました?choose.files

Use a Windows file dialog to choose a list of zero or more files interactively. 
于 2012-06-21T23:41:49.307 に答える
1

各ファイル名を入力する場合は、次のようにすべてのファイルをループしてみませんか。

filenames <- c("file1", "file2", "file3")
filecontents <- lapply(filenames, function(fname) {<insert code for reading file here>})
bigfile <- do.call(rbind, filecontents)

コードをインタラクティブにする必要があるreadline場合は、ユーザーが空の行を入力したときにファイルの要求を停止するループで関数を使用できます。

getFilenames <- function() {
    filenames <- list()
    x <- readline("Filename: ")
    while (x != "") {
        filenames <- append(filenames, x)
        x <- readline("Filename: ")
    }
    filenames
}
于 2012-06-22T00:01:22.413 に答える