4

名前に4つの共通文字が含まれる複数のCSVファイルがあります。同じ共通の文字でファイルを検索する方法を知りたいです。たとえば、「AM-25」は3つのcsvファイルの名前で一般的であり、「BA-35」は別の2つの名前で一般的です。

ファイルは次のようになりますAM-25.myfiles.2000.csv、AM-25.myfiles.2001.csv、AM-25.myfiles.2002.csv、BA-35.myfiles.2000.csv、BA-35.myfiles .2001.csv、これを使用してすべてのファイルを読み込みます。

files <- list.files(path=".", pattern="xyz+.csv", all.files = FALSE,full.names=TRUE )
4

1 に答える 1

6

このようなものをお探しですか?

do.call(rbind, lapply(list.files(path=".", pattern="AM-25"), read.table, header=TRUE, sep=","))

これにより、「AM-25」という文字を含むcsvファイルから読み取られたマトリックスがまとめられます。の引数はread.table、csvファイルによって異なる場合があります。


編集

ディレクトリ内のファイル名の可能な5文字のプレフィックスをすべて知らない場合にこれが機能することを願っています。

##Get all different first five letter strings for all cvs files in directory "."                                                                                                                                                                                           
file.prefixes <- unique(sapply(list.files(path=".", pattern="*.csv"), substr, 1,5))

##Group all matching file names according to file.prefixes into a list                                                                                                                                                                                                     
file.list <- lapply(file.prefixes, function(x)list.files(pattern=paste("^",x,".*.csv",sep=""), path="."))
names(file.list) <- file.prefixes ##just for convenience                                                                                                                                                                                                                   

##parse all csv files in file.list, create a list of lists containing all tables for each prefix                                                                                                                                                                           
tables <- lapply(file.list, function(filenames)lapply(filenames, function(file)read.table(file, header=TRUE)))

##for each prefix, rbind the tables. Result is a list of length being length(file.prefixes)                                                                                                                                                                                
##  each containing a matrix with the combined data parsed from the files that match the prefix                                                                                                                                                                            
joined.tables <- lapply(tables, function(t)do.call(rbind, t))

##Save tables to files                                                                                                                                                                                                                                                     
for (prefix in names(joined.tables))write.table(joined.tables[[prefix]], paste(prefix, ".csv", sep=""))
于 2013-03-20T16:00:54.603 に答える