6

我正在学习 R 教程。我一直在研究一个函数,该函数的一个部分是接受一个参数并使用它来定义一个目录来查找数据。然后它必须加载该数据。

就目前而言,以下工作:

getmonitor <- function(id, directory){

csvfile <- function(id) {
    if (id < 10) { 
        paste0(0,0,id,".csv")
    } else if (id < 100) {
        paste0(0,id,".csv")
    } else paste0(id,".csv")
}

foo <- read.csv(csvfile(id))

}

美好的。但是我现在必须使用“目录”参数来定义必须从中读取 csv 文件的目录。我在这里尝试了各种方法都无济于事。

目前,如果假设数据在工作目录中,则代码有效。我需要说“转到名为(目录)的目录,然后读取.csv。

包含所有数据文件的目录称为“specdata”,因此目录的参数是“specdata”。

我尝试了以下方法:

getmonitor <- function(id, directory){

  csvfile <- function(id) {
      if (id < 10) { 
          paste0(0,0,id,".csv")
      } else if (id < 100) {
          paste0(0,id,".csv")
      } else paste0(id,".csv")
  }

  filepath <- append(directory,"/",csvfile(id))

  foo <- read.csv(filepath)

 }

但后来我收到一条错误消息“错误!之后:无效的参数类型”

我已经尝试了一些不同的东西,如果我剪切并粘贴所有代码,它可能会比帮助更混乱。

这样做的合乎逻辑的方法是什么?我在附加的正确轨道上吗?如果没有,我还应该起诉什么?我需要获取参数“目录”,然后从该目录加载数据。

4

1 回答 1

7
getmonitor <- function(id, directory=getwd(), ...){

  csvfile <- sprintf("%03d.csv", id)

  filepath <- file.path(directory, csvfile)

  foo <- read.csv(filepath, ...)

  foo

 }
于 2013-01-16T00:47:28.137 回答