目標:計算滿足完整案例自定義標準(閾值引數)的多個檔案的 2 個變數之間的相關系數。
資料:指定目錄下的 332 個 .csv 檔案。
期望的輸出:帶有檔案相關系數的向量。
代碼:
correl <- function(directory = "~/specdata/specdatacsv", threshold = 0) {
filelist <- list.files(path = directory, pattern = ".csv", full.names = TRUE)
nobs <- numeric()
corrvector <- numeric()
for(i in length(filelist)) {
data <- read.csv(filelist[i])
nobs <- sum(complete.cases(data))
if (nobs <= threshold) { next
} else {
nitrate <- as.vector(data$nitrate)
sulfate <- as.vector(data$sulfate)
goodSulfate <- complete.cases(sulfate)
goodNitrate <- complete.cases(nitrate)
icorr <- cor(goodNitrate, goodSulfate)
corrvector <- c(corrvector, icorr)
}
}
corrvector
}
閾值 150 的輸出應回傳:
[1] -0.01895754 -0.14051254 -0.04389737 -0.06815956 -0.12350667 -0.07588814
但相反,空的 corrvector 被回傳。請幫我找出我犯的錯誤。
uj5u.com熱心網友回復:
根據@stefan 的評論,問題出在:
for(i in length(filelist))
因此,如果 的長度filelist為 332,則與以下內容相同:
for(i in 332)
而你實際上想要
for(i in 1:332)
這可以通過以下任一方式輕松實作:
for (i in 1:length(filelist)) {
print(i)
}
或者
for (i in seq_along(filelist)) {
print(i)
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/424469.html
上一篇:如何在R中撰寫一個回圈以對兩組隨機生成的值多次執行統計測驗
下一篇:Python遍歷行,運行并保存
