2016-10-20 4 views
0

私は、このコードをファイル数が多いディレクトリを読み取り、各データファイルで完全に観測されたケースの数を報告するカウントのために書きました。この関数は、最初の列がファイルの名前で、2番目の列が完全なケースの数であるデータフレームを返す必要があります。それはすべての行を選択し、その..だからRコードのデバッグとエラー修正の理解

complete<-function(directory, id=1:332){ 
     files.list<-list.files(directory, full.names=TRUE, pattern=".csv") 
     comp<-character() 
     return.data<-data.frame() 
     nobs<-numeric() 

     for(i in id){ 
     data<-read.csv(files.list[i]) 
      comp[i]<-!is.na(data[i]) 
      nobs[i]<-nrow(comp[i]) 

    } 
     return.data<-c(id,nobs) 
    } 

答えて

2

あなたの問題は!is.na()は、ブールベクトルではなく、単一の値を返すこと、である、あなたは、単一の中に複数の要素を挿入することはできません要素comp[i]

Rには、試みたものと全く同じ機能を持つcomplete.casesという機能があります。これであなたの関数はさておき、あなたのコードは、私が

  • なぜタイプcharactercompである点を指摘したいいくつかの欠陥を持っているこの

    complete<-function(directory, id=1:332){ 
        files.list<-list.files(directory, full.names=TRUE, pattern=".csv") 
        nobs <- numeric(length(id)) 
        for(i in id){ 
        data<-read.csv(files.list[i]) 
        nobs[i]<-sum(complete.cases(data)) 
        } 
        return.data<-data.frame(id,nobs) 
    } 
    

    のように見えるのでしょうか?

  • あなたは事前にそれを知っていれば、あなたが本当に欠落値のためにあなたのi番目のロードdata.frame`の列のみiを確認したいん
  • nobs <- numeric(length(id)))ベクトルの大きさを割り当てますか?
  • return.data <- c(id,nobs)return.dataは、先頭にids、末尾にnobsという単一の数値ベクトルになります。
+0

説明のためにwiciに感謝します。私は初心者ですが、これは基本的な明快さを理解し理解する間違いです。ありがとう、トン! –

0

は、あなたのデータにインデックスを提供する必要があります。次

Error in [.data.frame(data, i) : undefined columns selected
In addition: Warning messages:
1: In comp[i] <- !is.na(data[i]) : number of items to replace is not a multiple of replacement length
2: In comp[i] <- !is.na(data[i]) : number of items to replace is not a multiple of replacement length
3: In comp[i] <- !is.na(data[i]) : number of items to replace is not a multiple of replacement length

コードされています。私は、このコードではエラーに助けが必要私は コンプをcolumn.eg [i]を< - !is.na(データ[、i])と

+0

しかし、たとえそれが誤り渡って与えてインデックスを作成した後: '[.data.frame'(データ、i)におけるエラー:未定義の列が –

+0

この試す選択:!compは[[I]] < - [データです。 (データ$ colum2)] 列名を定義する...このようなコードをデータなしで修正するのは難しいので、再現可能な例を置くのが最善です – RomRom

+0

は助けに感謝しますが、私は何をしようとしています達成するためには、i番目の値のデータファイルからcomp [[i]]に値を取得します。データリンクは次のとおりです。https://d396qusza40orc.cloudfront.net/rprog%2Fdata%2Fspecdata.zip –