2017-09-01 117 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