我有大量要導入的文件,它們都保存爲zip文件。使用R中的動態名稱變量循環訪問文件
從閱讀其他文章似乎我需要通過壓縮文件的名稱,然後我想打開的文件的名稱。由於我有很多他們,我想我可以遍歷所有的文件並逐一導入它們。
是否有一種方法可以動態地傳遞名稱,或者是否有一種更簡單的方法來執行此操作?
這是我到目前爲止有:
Temp_Data <- NULL
Master_Data <- NULL
file.names <- c("f1.zip", "f2.zip", "f3.zip", "f4.zip", "f5.zip")
for (i in 1:length(file.names)) {
zipFile <- file.names[i]
dataFile <- sub(".zip", ".csv", zipFile)
Temp_Data <- read.table(unz(zipFile,
dataFile), sep = ",")
Master_Data <- rbind(Master_Data, Temp_Data)
}
我收到以下錯誤:
dt <- read.table(unz("D:/f1.zip", "f1.csv"), sep = ",")
我可以創建:
In open.connection(file, "rt") :
我可以使用手動導入動態刺痛,但它感覺很長 - 當我用read.table(unz(...))包裝它時,它不起作用。這似乎無法找到的文件名等引發錯誤
cat(paste(toString(shQuote(paste("D:/",zipFile, sep = ""))),",",
toString(shQuote(dataFile)), sep = ""), "\n")
但是,如果我再打印此控制檯我得到:
"D:/f1.zip","f1.csv"
然後我就可以粘貼到`讀取。表(UNZ(....))和它的作品,所以我覺得像我靠近
我已經加了標籤,因爲這data.table是什麼我幾乎總是使用,所以如果它可以以「FREAD」來完成那太好了。
任何幫助表示讚賞
'?fread'中的一個例子使用'system(「bunzip2 2008.csv.bz2」)'在讀入文件之前解壓縮文件。也許你應該添加一個類似的行。我建議在一個單獨的循環中執行此操作,但可以將其註釋掉並避免重複解壓縮相同的文件。 – lmo
什麼是完整的錯誤信息和回溯?這可能是你的工作目錄或文件路徑的問題嗎? – Christoph
@Christoph你是對的,這是我的wd問題,我正在用筆驅動器讀取 - 我是多麼愚蠢的檢查基礎知識!謝謝! – MidnightDataGeek