文件(file, "rt")中的错误:无法打开连接。

65

我是R语言的新手,尽管经过了大量的调查研究,但仍然无法找到解决这个错误的方法。以下是代码。我已经检查了我的工作目录,并确保文件在正确的目录中。谢谢。

pollutantmean <- function(directory, pollutant = "nitrate", id= 1:332)            
{                 if(grep("specdata",directory) ==1) 
            {
                    directory <- ("./specdata")
            }
            mean_polldata <- c()
            specdatafiles <- as.character(list.files(directory))
            specdatapaths <- paste(directory, specdatafiles, sep="")
                            for(i in id) 
                    {
                    curr_file <- read.csv(specdatapaths[i], header=T, sep=",")
                    head(curr_file)
                    pollutant
                    remove_na <- curr_file[!is.na(curr_file[, pollutant]), pollutant]
                    mean_polldata <- c(mean_polldata, remove_na)
                    }
            {
                    mean_results <- mean(mean_polldata)
                    return(round(mean_results, 3))
            }
} 

我遇到的错误如下:
Error in file(file, "rt") : cannot open the connection

file(file, "rt")

read.table(file = file, header = header, sep = sep, quote = quote, 
    dec = dec, fill = fill, comment.char = comment.char, ...)

read.csv(specdatapaths[i], header = T, sep = ",")

pollutantmean3("specdata", "sulfate", 1:10)

In addition: Warning message:
In file(file, "rt") :
  cannot open file './specdata001.csv': No such file or directory

4
看起来你有一个名为 specdata 的文件夹,其中包含文件 001.csv 等等。正确的路径是 ./specdata/001.csv,而不是 ./specdata001.csv。尝试在 specdatapaths 行中将 sep="" 更改为 sep="/". - jlhoward
2
或者尝试调试101策略,例如打印传递给引发错误的函数的值。 - IRTFM
谢谢你们两个的回复。我已经成功解决了连接错误,但现在出现了“未识别的列选择”错误。有什么建议吗?谢谢 pollutantmean("specdata", "sulfate", 1:10) Error in [.data.frame(curr_file, , pollutant) : undefined columns selected 6 stop("undefined columns selected") 5 [.data.frame(curr_file, , pollutant) 4 curr_file[, pollutant] 3 [.data.frame(curr_file, !is.na(curr_file[, pollutant]), pollutant) 2 curr_file[!is.na(curr_file[, pollutant]), pollutant] 1 pollutantmean("specdata", "sulfate", 1:10) - ldeassis
3
你应该把这当作一个单独的问题来询问。在评论中,多行代码几乎不可读。 - Stewart Macdonald
3
感谢这个问题,它将帮助所有可能面临这种情况的未来 r 用户。 - bonCodigo
在*nix(和Mac)下,您需要使用分配“directory”或调用“setwd”函数来设置完整路径... - lkahtz
17个回答

39

您需要将directory <- ("./specdata")更改为directory <- ("./specdata/")

相对于您当前的工作目录,您正在查找位于specdata目录中的001.csv文件。

如果没有上下文,这个问题几乎不可能回答,因为您没有在此处提供您的工作目录结构。幸运的是,我已经在Coursera上学习了R编程,所以我已经完成了这个作业问题。


通用解决方案是在开头添加setwd("/绝对路径/所需文件目录/")。 - kvaibhav
1
我不断改变工作目录,我的工作文件夹在这个目录下面。但是Rstudio仍然无法进入文件夹。所以我必须在用户/主文件夹后面输入整个路径。(这是在Mac上的情况)。 - bonCodigo

28
我猜你看到这个错误的原因是因为RStudio丢失了你的工作目录路径。
(1) 进入会话...
(2) 设置工作目录...
(3) 选择目录...
--> 然后你会看到一个窗口弹出。
--> 选择存储数据的文件夹。
这是一种没有任何代码的方法来更改你的工作目录。希望这可以帮助你。

enter image description here


14

将您的工作目录设置为更高一级/文件夹。例如,如果已经设置为:

setwd("C:/Users/Z/Desktop/Files/RStudio/Coursera/specdata")

返回上一级目录并将其设置为:

setwd("C:/Users/Z/Desktop/Files/RStudio/Coursera")

换句话说,不要将“specdata”文件夹作为您的工作目录。


11

我刚花了很多时间试图理解我的代码有什么问题...

如果你在使用Windows系统,问题似乎很简单。

当你将文件命名为“blabla.txt”时,Windows会将其命名为“blabla.txt.txt”... 对于.csv文件也是一样的,如果你将它命名为“001.csv”,Windows会创建一个名为“001.csv.csv”的文件。

因此,在创建.csv文件时,只需将其重命名为“001”,然后使用 read.table("/absolute/path/of/directory/with/required/001.csv") 在R中打开它即可。

这方法对我来说有效。


哇,这对我也起作用了。在Windows 10和RStudio中都可以使用。谢谢! - maria118code
砰!添加文件扩展名。谢谢。 - Todd Vlk
哇哦...救星 - 我正在尝试读取 studentss.csv (ss) 哈哈 - AussieDev81

3

关闭你的R studio,以管理员身份重新运行它。这对我起了魔法作用。希望这也对你和其他遇到这个问题的人有所帮助。


2

如果在Windows上运行,请尝试以管理员身份运行R或R Studio,以避免Windows操作系统文件系统限制。


这是我在 Mac 上尝试通过代理读取远程文件时的解决方案。 - NelsonGon

2

我遇到了这个错误,并发现我的 Windows 机器上的 RStudio 尝试使用 \ 作为转义符号,因此不得不将其替换为 \\ 来处理它。

尝试使用 file.exists 函数和您的路径,例如:

file.exists("D:\\R\\path_to_file.csv")

2

如果在访问文件时出现此类错误,可以进行更好的检查,使用file.exists("file_path/file_name")函数。该函数将返回TRUE,如果文件存在且可访问,则返回False


1
工作:directory<-("N:/Dropbox/_BonesFirst/65_GIS_Raw/LODES/") - Mox

1
使用setwd()更改到适当的目录。 仅使用文件名访问工作目录中的任何文件。 通过使用"../<filename>"导航到上一级文件夹。

1

文件(file, "rt")中的错误:

我也遇到了同样的错误,通过使用paste0而不是paste删除地址中的空格来解决了问题

filepath=paste0(directory,"/",filename[1],sep="")

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