2017-09-01 106 views
0

我遇到以下問題。我已將多個csv文件導入到我的工作目錄中。希望有任何幫助從工作目錄中打開文件

files 
[1] "sept2010.csv__001.csv" "sept2010.csv__002.csv" "sept2010.csv__003.csv" "sept2010.csv__004.csv""sept2010.csv__005.csv" "sept2010.csv__006.csv" 

在這裏,我有超過200個csv文件。如果我魔杖打開文件我可以

data<-rbind(sept2010.csv__001.csv,sept2010.csv__002.csv) # It is time consuming to rbing 200 files. 

做時,我嘗試用打開文件:

myfiles = do.call(rbind, lapply(files, function(x) read.csv(x, stringsAsFactors = FALSE))) 

我得到一個錯誤信息:

Error in file(file, "rt") : cannot open the connection 

當我請嘗試以下操作:

data<-do.call("rbind", lapply(files, read.csv, header = TRUE)) 

我ge t是相同的錯誤消息

如果我嘗試用手動打開文件:

folder <- "C:/Users/NewPap/Desktop/DATA/test"  
file_list <- list.files(path=folder, pattern="*.csv") 
for (i in 1:length(file_list)){ 
    assign(file_list[i], 
    read.csv((paste(folder, file_list[i], sep=''))) 
    )} 

我得到同樣的錯誤

我不知道我做了什麼錯。希望得到任何幫助

+2

有沒有足夠的讓我們來幫助你。但是,如果您使用'list.files(「path /」)'來查找不同目錄中的文件,我偶爾會忘記添加'list.files(...,full.names = TRUE)'來獲取包含的路徑與文件名。 – r2evans

+0

我認爲問題出在公司電腦和管理權限上。這就是無法打開連接的原因。 – kelamahim

+0

好的...所以你可以手動打開文件嗎?如果操作系統拒絕你訪問,R就沒有辦法做到這一點。 – r2evans

回答

1

如果您的所有文件都在你的工作目錄,然後

lapply(grep(".csv",list.files(full.names=T),value="TRUE"),read.csv) 

應打開所有在列表中的CSV文件(每個文件的內容將出現在列表中的一個元素)。

如果所有CSV文件具有相同的列數,然後

do.call("rbind",lapply(grep("csv",list.files(full.names=T),value="TRUE"),read.csv)) 

將產生所有CVS文件的單個數據幀。

+0

有一個錯誤無法打開連接 – kelamahim

+0

當你輸入file.list()時,你看到你的文件嗎?你確定你有權限打開這些文件(你在哪個操作系統上?)? – xraynaud

+0

list.files()是我可以看到數據,而且我在窗口上 – kelamahim

1
folder <- "C:/Users/NewPap/Desktop/DATA/test"  
files <- list.files(path=folder, pattern="*.csv") 

試試這個:

data = Map(f = read.csv,files,header=T) 
Reduce(function(x,y){rbind(x,y)},data) 
+0

剛剛嘗試過,它不起作用。 – kelamahim

+0

@kelamahim然後它是權限問題。只要嘗試使用'read.csv(files [1],header = T)'首先讀取一個文件''。這會拋出一個錯誤嗎? – TUSHAr