【发布时间】:2015-02-12 12:03:45
【问题描述】:
我是 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
【问题讨论】:
-
看起来你有 (??) 一个目录
specdata和文件001.csv等。那么正确的路径是./specdata/001.csv,not./specdata001.csv.尝试在specdatapaths行中将sep=""更改为sep="/"。 -
或者尝试 Degugging 101 策略,例如打印给抛出错误的函数的值。
-
感谢两位的回复。我能够修复打开的连接错误,但现在我收到“选择了未识别的列”错误。有什么建议?谢谢污染平均(“specdata”,“硫酸盐”,1:10)
[.data.frame(curr_file,,污染物)中的错误:选择了未定义的列6停止(“选择了未定义的列”)5[.data.frame(curr_file,,污染物)4 curr_file[, 污染物] 3[.data.frame(curr_file, !is.na(curr_file[, 污染物]), 污染物) 2 curr_file[!is.na(curr_file[, 污染物]), 污染物] 1 污染物平均值("specdata", “硫酸盐”,1:10) -
您应该将其作为一个单独的问题提出。多行代码在 cmets 中几乎不可读。
-
欢迎这个问题,以帮助所有可能面临此问题的未来 r 用户。