2013-08-18 84 views
0

我想解決R中有關閱讀具有相同名稱但分配在不同目錄中的多個文件的一個小問題。在R中讀取多個文件分配在不同的目錄中,但具有相同的名稱

我有100個文件名爲R04與擴展.xlsx,但他們在100個不同的目錄中分配,例如:

file 1: C:\General Data\Month1\R04.xlsx

file 2: C:\General Data\Month2\R04.xlsx

.

.

.

file 100: C:\General Data\Month2\R04.xlsx

我的問題是我不能去閱讀這些文件。也許可以用for來閱讀它們,並且由於100個文件中的同名,我不知道是否可以用與月份相關的數字來命名每個文件,例如在第一個文件的名稱應該是爲01由於第1個月等

+0

你嘗試先讀一個單一的文件如果是,你能不能請張貼代碼。 – Metrics

+0

@Metrics @agstudy OK,當我讀取一個文件時,我做了這個,並且一切正常:'setwd(「D:/ Documentos/Files/Month1」) 庫(RODBC) Base =「R04.xlsx」 conexion = odbcConnectExcel2007(Base) Month1_R04 = sqlQuery(channel = conexion,「select * from [Hoja1 $]」,as.is = TRUE) close(conexion)'問題是我有100個不同的目錄,比如'D:/ Documentos/Files/Month1'與2,3等,我尋找一種方式來做到這一點與循環與因爲因爲月的數量變化,我會有101,102等,你可以看到我會有另一個每個文件的'Month1_R04'名稱結構的問題 – Duck

回答

0

嘗試使用XLConnect包。

library(XLConnect) 
file1 <- readWorksheet(loadWorkbook("C:\General Data\Month1\R04.xlsx"),sheet=1) 
1

我會用list.files按模式列出我的文件。然後用一些正則表達式來命名我的文件。

例如:

library(XLConnect) 
files.path <- list.files(pattern=".*R04.xlsx",full.names=TRUE) 
setNames(lapply(files.path, function(x) read.xlsx(x,1)), 
     gsub('.*/(.*)/R04.*','\\1_R04',files.path)) 

用一些數據來證明我如何使用gsub這裏:

ll <- c("C:/General Data/Month1/R04.xlsx", 
     "C:/General Data/Month2/R04.xlsx", 
     "C:/General Data/Month3/R04.xlsx") 
gsub('.*/(.*)/R04.*','\\1_R04',ll) 
[1] "Month1_R04" "Month2_R04" "Month3_R04" 
+0

但是我有'R04'文件在diferents文件夾中但不是相同的! – Duck

相關問題