web-dev-qa-db-ja.com

file(file、 "rt")のエラー:接続を開くことができません-ファイルを開くことができません 'specdata'アクセスが拒否されました

Windows7でrStudiov3.1.2を実行しています。このラップトップは64ビットマシンです。

Courseraが提供するJHURプログラミングコースを受講していますが、問題のパート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フォルダー内には、specdataとも呼ばれる.csvファイルを含むディレクトリがあることに注意してください。私はこれを変更することができましたが、これまで私はそれを使って作業していて、何の問題にも遭遇していません。

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
ASwiftPeregrine

ぐっすり眠った後、私は問題を見ました。ディレクトリをまったく使用していなかったので、追加する必要がありました。

thisFileName = paste(directory, "/", formatC(i, width = 3, flag = "0"), ".csv", sep="")
1
ASwiftPeregrine

この行は失敗します:

_read.csv(directory, thisFileName)
_

なぜなら、_?read.csv_の方向をざっと見ただけでわかるように、その関数のfirst引数は次のとおりです。

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

作業?

私は2018年にCourseraからRプログラミングを学んでいます。質問が3年前に投稿されたことは知っていますが、誰かが知りたい場合は投稿したいと思います。

私も同じ問題に直面していますが、読んだ後 このリンク

フォルダ内のファイルだけでなく、フォルダの場所も指定する必要があることがわかりました。だから私はコードを入れました:

folder<- "C:\\Users\\PHD\\Documents\\specdata"
file_list <- list.files(path=folder, pattern="*.csv")
0
Huyen Pham