【问题标题】:How to read multiple CSV files by creating function [duplicate]如何通过创建函数来读取多个 CSV 文件 [重复]
【发布时间】:2014-01-19 10:33:20
【问题描述】:

如何编写一个函数来读取多个csv 文件,其中许多文件以 00 开头,例如001.csv、002.csv、003.csv 等等。

我的代码是:

getmonitor <- function(id, directory, summarize = FALSE) {

  filename <- list.files(pattern="specdata/.csv")

  data <- read.csv( paste(directory,"/",id,".csv",sep="") )
  return (data) 
}

如果你输入它会起作用:

getmonitor(100, "specdata")

但如果我输入:

getmonitor(001, "specdata")

它会返回:

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

另外:警告信息:

In file(file, "rt") :
  cannot open file 'specdata/1.csv': No such file or directory

如何让我的函数读取以00s 开头的csv 文件?

【问题讨论】:

  • 这个 Coursera 问题已经在 Stack Overflow 上得到解决。只需搜索“getmonitor”,看看会发生什么。

标签: r file function file-io


【解决方案1】:

您可以使用sprintf 来格式化数字,如下所示:

> sprintf('%03d',12)
[1] "012"

【讨论】:

    【解决方案2】:

    您可以按照@Andrey Shabalin 的建议使用 sprintf,也可以像这样使用 formatC:

    id <-1
    formatC(id, width=4, flag="0")
    [1] "0001"
    

    在您的函数中,您必须在读入文件之前输入这一行:

    id <- formatC(id, width=4, flag="0")
    

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 2018-12-21
      • 2020-02-06
      • 2021-10-06
      • 1970-01-01
      • 1970-01-01
      • 2013-10-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多