【问题标题】:Opening files from working directory从工作目录打开文件
【发布时间】:2017-09-01 08:00:13
【问题描述】:

我有以下问题。我已将多个 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))

我收到同样的错误信息

如果我尝试手动打开文件:

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='')))
   )}

我遇到同样的错误

我不确定我做错了什么。希望有任何帮助

【问题讨论】:

  • 我们无法为您提供帮助。但是,如果您使用list.files("path/") 查找不同目录中的文件,我偶尔会忘记添加list.files(..., full.names=TRUE) 以获取包含在文件名中的路径。
  • 我认为问题出在公司计算机和管理权限上。这就是无法打开连接的原因
  • 好的...那么您可以手动打开文件吗?如果我拒绝您访问操作系统,R 将无能为力。
  • 我可以打开它们,但只能使用 rbind。还有其他更快的方法吗?
  • rbind 不打开文件,它只是将其参数放在一起,形成一个更大的矩阵或数据框。

标签: r csv data-files


【解决方案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 文件的单个数据帧。

【讨论】:

  • 当你输入 file.list() 时你看到你的文件了吗?你确定你有打开文件的权限(你在哪个操作系统上?)?
  • list.files() 是的,我可以看到数据,我在 windows 上
  • 如果您使用文件资源管理器打开目录并询问文件信息。您对要打开的文件有读取权限吗?
  • 是的,我有。基本问题是我可以使用 rbind 轻松打开和读取文件,但是当我尝试将它们一起打开时不起作用
  • codereview.stackexchange.com/questions/171309/… 这与我打开文件时使用的方法几乎相同
【解决方案2】:
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)

【讨论】:

  • @kelamahim 然后是权限问题。只需尝试先使用read.csv(files[1],header=T) 读取一个文件。这会引发错误吗?
猜你喜欢
  • 2013-05-05
  • 2017-08-23
  • 1970-01-01
  • 1970-01-01
  • 2013-10-24
  • 1970-01-01
  • 2015-08-21
  • 2019-12-03
  • 2014-11-21
相关资源
最近更新 更多