文件错误(文件,"rt"):无法打开连接 - 无法打开文件 'specdata' 访问被拒绝
Error in file(file, "rt") : cannot open the connection - cannot open file 'specdata' access denied
我是 运行 rStudio v3.1.2 on Windows 7. 这台笔记本电脑是 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 的文件夹,在 that 文件夹中有一个包含 .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 之类的东西以其他方式提取数据,但是因为我一直被卡住,所以我把所有东西都扔掉了想尝试这种方式。
我在网上搜索以尝试找到此解决方案。尽管有几个已回答的问题 none,但其中似乎与这个问题一样令人困惑。 WR-eSUB 是一个管理文件夹,但以前尝试打开其中的文件之前没有产生此错误。
此行将失败:
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)
工作?
睡个好觉后,我看到了问题所在。我根本没有使用目录,所以我需要添加它。
thisFileName = paste(directory, "/", formatC(i, width = 3, flag = "0"), ".csv", sep="")
我在 2018 年从 Coursea 学习 R 编程。我知道这个问题已经 post3 年前编辑过,但如果有人想知道,我仍然更喜欢 post。
我也面临同样的问题,但在阅读 this link 之后。
我知道我们需要指定文件夹的位置以及文件夹中的文件。所以我放了代码:
folder<- "C:\Users\PHD\Documents\specdata"
file_list <- list.files(path=folder, pattern="*.csv")
我是 运行 rStudio v3.1.2 on Windows 7. 这台笔记本电脑是 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 的文件夹,在 that 文件夹中有一个包含 .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 之类的东西以其他方式提取数据,但是因为我一直被卡住,所以我把所有东西都扔掉了想尝试这种方式。
我在网上搜索以尝试找到此解决方案。尽管有几个已回答的问题 none,但其中似乎与这个问题一样令人困惑。 WR-eSUB 是一个管理文件夹,但以前尝试打开其中的文件之前没有产生此错误。
此行将失败:
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)
工作?
睡个好觉后,我看到了问题所在。我根本没有使用目录,所以我需要添加它。
thisFileName = paste(directory, "/", formatC(i, width = 3, flag = "0"), ".csv", sep="")
我在 2018 年从 Coursea 学习 R 编程。我知道这个问题已经 post3 年前编辑过,但如果有人想知道,我仍然更喜欢 post。
我也面临同样的问题,但在阅读 this link 之后。
我知道我们需要指定文件夹的位置以及文件夹中的文件。所以我放了代码:
folder<- "C:\Users\PHD\Documents\specdata"
file_list <- list.files(path=folder, pattern="*.csv")