你找這樣的事情嗎?
do.call(rbind, lapply(list.files(path=".", pattern="AM-25"), read.table, header=TRUE, sep=","))
這會將包含字符「AM-25」的csv文件中讀取的矩陣混合在一起。 read.table
的參數可能會有所不同,具體取決於您的csv文件。
編輯
我希望這個工程,你不知道在你的目錄文件名的所有可能的五個字母前綴的情況:
##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=""))
由於這樣的作品,但有什麼方法可以在「模式」部分的文件名中使用拳頭5個字符?我有多個csv文件,我無法在「模式」部分提供任何特定的術語。 – 2013-03-20 18:16:50
你的意思是說,包含例如子字符串「AM-25」**的非文件名**在開始時不匹配? list.files(path =「。」,pattern =「^ AM-25」)將匹配文件「AM-25.myfiles.2000.csv」「AM-25.myfiles.2001.csv」和「AM-25 .myfiles.2002.csv「而不是文件」otherfile_AM-25.myfiles.2000.csv「。你是這個意思嗎? – user1981275 2013-03-21 10:57:00
是的,我正在處理這種格式的幾個CSV文件,所以我正在尋找方法來破解名稱中具有共同特徵的所有文件。就像你用「AM-25」建議的那樣。但是這些文件太多,我無法手動提供「模式」參數。 – 2013-03-21 16:06:17