【问题标题】:Error in read.table(file = file, header = header, sep = sep, quote = quote, : no lines available in inputread.table 中的错误(file = file,header = header,sep = sep,quote = quote,:输入中没有可用的行
【发布时间】:2020-04-04 12:16:51
【问题描述】:

我在几个文件夹中有几个 csv 文件(比如说 A.csv、B.csv、...),比如说(F1、F2、...)。我想以 cbind 每个文件夹的 A.csv、B.csv 并为每个文件夹创建主数据框的方式读取所有文件。这意味着我需要为我的 n 个文件夹拥有 n 个数据框,该文件夹具有基于文件夹名称的唯一名称。

我已尝试使用此代码获取 csv 文件列表。

files <- dir("/Users/.../.../...", recursive=TRUE, full.names=TRUE, pattern="\\.csv$") 

然后创建了一个函数:

readFun <- function(x) { df <- read.csv(x)}

然后 sapply:

sapply(files, readFun)

它返回此错误:

Error in read.table(file = file, header = header, sep = sep, quote = quote,  : no lines available in input

我玩了很多代码,但没有弄清楚如何调试它。 非常感谢任何帮助。

另外,关于如何为每个文件夹创建主数据框的任何提示?

谢谢

【问题讨论】:

标签: r


【解决方案1】:

您可以首先获取所有目录名称,然后创建一个函数以从一个目录中读取所有文件并将它们组合在一起并将组合文件写入同一目录中。

all_directories <- dir('top/directory', full.names = TRUE)

bind_files_into_one <- function(file_path) {
   all_files <- list.files(file_path, full.names = TRUE, pattern = "\\.csv$")
   temp <- do.call(cbind, lapply(all_files, read.csv))
   write.csv(temp, paste0(file_path, '/combined.csv'), row.names = FALSE)
}

我们可以使用lapply 将此函数应用于每个目录。

lapply(all_directories, bind_files_into_one)

【讨论】:

  • 谢谢,但仍然是同样的错误:read.table 中的错误(file = file,header = header,sep = sep,quote = quote,:输入中没有可用的行
  • @10datmad 你能检查你的文件是否损坏?因为我在我的系统上检查了这两个文件夹/目录的代码,它有两个 csv,它对我来说很好。
  • 谢谢!问题来自文件中的不同行。
猜你喜欢
  • 2019-09-12
  • 1970-01-01
  • 1970-01-01
  • 2021-12-22
  • 2014-12-21
  • 2017-02-06
  • 2013-10-27
  • 1970-01-01
  • 2022-12-01
相关资源
最近更新 更多