R-project文件路径的连接方法

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))

}

好的。但是现在我必须使用“directory”参数来定义必须从哪个目录读取csv文件。我已经尝试了各种方法,但都没有成功。
当前,如果假设数据在工作目录中,则代码可以正常工作。我需要说“进入名为(directory)的目录,然后读取.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)

 }

但是我收到了一个错误信息 "Error in !after : invalid argument type"

我尝试了一些不同的方法,如果我把所有的代码都剪切和粘贴起来,可能会更加混乱。

做这件事的逻辑方式是什么?如果我使用append,我是否在正确的轨道上?如果不是,我还应该使用什么?我需要取参数“directory”,然后从该目录加载数据。


1
你需要使用 paste(directory, csvfile(id), sep="/") 而非 append,因为它们的功能完全不同。 - Matthew Lundberg
1
您似乎在使用append之前没有阅读?append或测试文档底部的示例以了解其功能。 - joran
2
另外,你可以使用sprintf('%03d', id)代替整个csvfile函数。 - Justin
1个回答

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

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

  filepath <- file.path(directory, csvfile)

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

  foo

 }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接