2015-05-15 54 views
1

我正在使用R Studio版本3.1.2和XLConnect包加載,讀取和寫入多個xlsx文件。我可以通過複製和創建多個對象來做到這一點,但我正在嘗試使用1個對象(同一文件夾中的所有文件)。請看例子 我能做到這一點列出每個文件,但要使用循環XLConnect - 帶循環對象的readWorksheet

tstA <- loadWorkbook("\\\\FS01\\DEPARTMENTFOLDERS$\\tst\\2015\\Apr\\DeptA.xlsx") 
tstB <- loadWorkbook("\\\\FS01\\DEPARTMENTFOLDERS$\\tst\\2015\\Apr\\DeptB.xlsx") 

它這是即時通訊的方式試圖做到這一點,但得到一個錯誤

dept <- c("DeptA","DeptB","DeptC") 
for(dp in 1:length(dept)){ 
dept[dp] <- loadWorkbook("\\\\FS01\\DEPARTMENTFOLDERS$\\tst\\2015\\Apr\\",dept[dp],".xlsx")} 

這一點,我想以後做使用XLConnect中的readWorksheet函數。

道歉爲跛腳的問題,但我正在努力鍛鍊如何最好地做到這一點。 感謝

回答

2

你可以閱讀在一個操作中的所有文件到列表如下(調整patternsheet爲需要得到的文件你想/張):

path = "\\\\FS01\\DEPARTMENTFOLDERS$\\tst\\2015\\Apr\\" 

df.list = lapply(list.files(path, pattern="xlsx$"), function(i) { 
    readWorksheetFromFile(paste0(path, i), sheet="YourSheetName") 
}) 

如果你想,所有這些都的數據幀轉換爲一個單一的數據幀,你可以這樣做:

df = do.call(rbind, df.list) 
+0

當我嘗試使用這個,我得到以下錯誤df.list = lapply(list.files(path),pattern =「xlsx $ 「),函數(i){ 錯誤:意外的', '在「df.list = lapply(list.files(path),pattern =」xlsx $「),」 > readWorksheetFromFile(paste0(path,i),sheet =「TST」) Paste0錯誤(路徑,i ):object'i'not found >} 錯誤:「}」中出現意外的'}' – New2Programming

+0

刪除'path'後的右括號。對於那個很抱歉。現在試試。 – eipi10