5

我在 Windows 7 上运行 rStudio v3.1.2。这台笔记本电脑是 64 位机器。

我正在参加 Coursera 提供的 JHU R 编程课程,但我遇到了问题的第 1 部分中收到的错误。我有一些错误处理功能,我没有在这个例子中使用,所以我真的只是想展示我绝对需要的东西。我包含这些消息的唯一原因是证明必须满足所有条件才能继续。

  pollutantmean <- function(directory, pollutant, id=1:332) {

  setwd("C:\\Users\\WR-eSUB\\specdata")

  if(!isValidDirectory(directory)) {
        stop("Invalid input given.  Please specify valid directory to operate on.")
  }
  if(!isValidPollutant(pollutant)) {
        stop("Invalid input given.  Please specify valid pollutant (nitrate/sulfate).")
  }
  if(!isValidIdRange(id)) {
        stop("Invalid input given.  Please specify valid id range (1:332).")
  }
  sortedData = numeric()
  for (i in id) {
        thisFileName = paste(formatC(i, width = 3, flag = "0"), ".csv", sep="")
        thisFileRead = read.csv(directory, thisFileName)
        sortedData = c(sortedData, thisFileRead[[pollutant]])
  }
  mean(sortedData, na.rm = TRUE)
}

请注意,在 WR-eSUB 内有一个名为 specdata 的文件夹,在文件夹内有一个包含 .csv 文件的目录,也称为 specdata。我可以改变这一点,但到目前为止,我一直在使用它,并且没有遇到任何问题。

当我打电话时,pollutantmean("specdata", "nitrate", 1:2)我收到以下错误消息:

 Error in file(file, "rt") : cannot open the connection 
 In addition: Warning message: In file(file, "rt") : cannot open file 'specdata': Permission denied

现在,在我无数次尝试完成这部分作业的过程中,我已经能够使用 lapply 等其他方式提取数据,但因为我一直卡住,所以我把所有东西都扔掉了,想以这种方式尝试。

我已经在网上搜索以尝试找到此解决方案。尽管有几个已回答的查询,但似乎没有一个像这个一样令人困惑。WR-eSUB 是一个管理文件夹,但之前在其中打开文件的尝试没有产生此错误。

4

3 回答 3

3

睡个好觉后,我发现了问题。我根本没有使用目录,所以我需要添加它。

thisFileName = paste(directory, "/", formatC(i, width = 3, flag = "0"), ".csv", sep="")
于 2015-02-19T22:54:08.737 回答
1

此行将失败:

read.csv(directory, thisFileName)

因为,粗略地看一眼?read.csv就会告诉你,该函数的第一个参数是:

file: the name of the file which the data are to be read from.
      Each row of the table appears as one line of the file.  If it
      does not contain an _absolute_ path, the file name is
      _relative_ to the current working directory, ‘getwd()’.
      Tilde-expansion is performed where supported.  This can be a
      compressed file (see ‘file’).

并且您正在传递它directory(根据specdata您显示的调用)。

鉴于setwd()已经把你放在这个目录中,不会

read.csv(theFileName)

工作?

于 2015-02-19T02:20:28.887 回答
0

我在 2018 年从 Coursea 学习 R 编程。我知道该问题已在 3 年前发布,但如果有人想知道,我仍然更愿意发布。

我也面临同样的问题,但在阅读了这个链接之后。

我知道我们需要指定文件夹的位置以及文件夹中的文件。所以我放了代码:

folder<- "C:\\Users\\PHD\\Documents\\specdata"
file_list <- list.files(path=folder, pattern="*.csv")
于 2018-03-27T17:53:17.177 回答