2016-10-21 4 views
0

データファイルのディレクトリと完全なケースのしきい値をとる関数を記述しようとしていて、完全に観測されたケースの数すべての変数で)がしきい値よりも大きい場合。関数は、しきい値要件を満たすモニターの相関のベクトルを返す必要があります。モニターがしきい値要件を満たさない場合、関数は長さ0の数値ベクトルを返さなければなりません。複数のエラーが発生しているので、ここでは言及しません。Rがエラーを起こしているCor関数

コードのデータファイルはここにある: https://d396qusza40orc.cloudfront.net/rprog%2Fdata%2Fspecdata.zip

コード私はあなたが望むものを手に入れるために機能を少し修正

corr<-function(directory, threshold=0){ 
    files.list=list.files(directory, full.names=TRUE, pattern=".csv") 
    comp.sum<-numeric() 
    num<-numeric() 

    for(i in 1:332){ 
    data<-read.csv(files.list[i]) 
    data.cor<-na.omit(data[,2:3]) 
    comp.sum<-sum(data.cor) 
    if 
    { 
    comp.sum>threshold 
    cor.var<-cor(data.cor, use="all.obs") 
    } 
    else 
    { 
    num 
    } 
    } 
    cor.var 
} 
+1

少なくとも、「if」の行方不明の条件があります。私はそれが間違って括弧内にあると思う。 – Phann

答えて

1

。これはもちろん、硫酸塩と硝酸塩は常に2列目と3列目にあり、そのディレクトリには他のcsvsは存在しないと仮定します(これらの列に数値があると、相関係数が他のものに対して計算されます)。

corr<-function(directory, threshold=0){ 
    files.list=list.files(directory, full.names=TRUE, pattern=".csv") 
    cors <- rep(0, length(files.list)) 
    for(i in 1:length(files.list)){ 
    data<-read.csv(files.list[i], header = TRUE) 
    data.cor<-na.omit(data[,2:3]) 
    nobs<-nrow(data.cor) 
    if(nobs > threshold){ 
     cors[i]<-cor(data.cor[,1], data.cor[,2]) 
    }else{ 
    cors[i] <- 0 
    } 
    } 
    return(cors) 
} 
+0

コードをお寄せいただきありがとうございますが、私のコードで間違いを言及できますか? –

+0

あなたが私の隣にあなたの機能を置くなら、間違いがどこにあるかはかなり明らかです。例えば、あなたはベクトルの要素をあなたのもので埋めるのではなく、たびに 'cor.var'を書き直す、' cor.var'の行は 'if'文の中にあります。 –

関連する問題