1. ホーム
  2. r

[解決済み] file(file, "rt")でのエラー:complete.casesプログラムでの無効な'description'引数

2022-01-29 05:07:21

質問

ファイルの詰まったディレクトリを読み込んで、各データファイルで完全に観測されたケースの数を報告するR関数を書いています。この関数は、最初の列がファイル名で、2番目の列が完全なケースの数であるデータフレームを返します。

のようなものです。

id nobs
1  108
2  345
...
etc

以下は、私が書いた関数です。

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

  for(i in 1:332) {
    path<-paste(directory,"/",id,".csv",sep="")
    mydata<-read.csv(path)
    #nobs<-nrow(na.omit(mydata))
    nobs<-sum(complete.cases(mydata))
    i<-i+1
  }

  completedata<-c(id,nobs)
}

関数を実行しています。

complete("specdata",id=1:332)

が、このようなエラーが発生します。

Error in file(file, "rt") : invalid 'description' argument

も試してみました。 traceback() 関数を使用して私のコードをデバッグすると、次のような出力が得られます。

traceback()
# 4: file(file, "rt") at #6
# 3: read.table(file = file, header = header, sep = sep, quote = quote, 
#    dec = dec, fill = fill, comment.char = comment.char, ...) at #6
# 2: read.csv(path) at #6
# 1: complete("specdata", id = 1:332)

解決方法は?

完全に再現できる例がないと何とも言えませんが、あなたの問題はこの行にあるのではないでしょうか。

path<-paste(directory,"/",id,".csv",sep="")

id はベクトルなので、pathは文字列のベクトルになり、それを使って read.csv の場合、1つのパスではなく、すべてのパスを一度に渡しています。上の行を次のように変更してみてください。

path<-paste(directory,"/",id[i],".csv",sep="")

を実行し、それがうまくいくかどうかを確認します。