我必須編寫一個函數,其中包含數據文件的目錄和完整案例的閾值,並計算每個文件中硫酸鹽和硝酸鹽(兩列)之間的相關性,其中完全觀察到的病例數量所有變量)大於閾值。該函數應返回滿足閾值要求的監視器的相關向量。如果沒有文件符合閾限要求,則函數應該返回長度的數字矢量0這個函數的原型如下NA列之間的相關性
我的代碼看起來像這樣
corr <- function(directory,threshold=0){
a<-list.files("specdata")
for (i in a) {
data <- read.csv(paste(directory, "/", i, sep =""))
x<-complete.cases(data)
j<-sum(as.numeric(x))
sulfate<-data[,2]
nitrate<-data[,3]
b<-cor(sulfate,nitrate)
}
if (j>threshold)
return(b)
else
numeric()
}
沒有錯誤messege
如果鍵入
ž< -corr( 「specdata」)
頭(z) [1]不適用
我不知道問題是什麼。我不知道列中的NA值是否與它有關。我認爲我的代碼中缺少一些東西。我認爲read.csv在每個文件需要一個數據幀時創建一個唯一的數據幀,但我不明白爲什麼在這種情況下返回值是NA(當沒有閾值時)。
但是,如果我介紹一個更大的閾值(1000):
z<-corr("specdata",1000)
head(z)
numeric(0)
預期輸出我需要的是
cr <- corr("specdata", 150)
head(cr)
[1] -0.01895754 -0.14051254 -0.04389737 -0.06815956 -0.12350667 -0.07588814
'硫酸<-data [X,2];硝酸鹽<-data [x,3]' – Roland
好吧,現在它似乎正在工作,但不是預期的輸出。難道是這些文件未被正確加載?我的csv文件在001,002,003,...,但我沒有使用sprintf(%03d),因爲我使用了list.files,而這似乎工作。 –
您在循環中覆蓋b。 –