我有一个csv文件列表,我正在迭代
corr <- function(directory) {
filename <- list.files(directory)
x <- paste(directory, "/", sep="")
monitor_list <- paste(x, filename, sep="")
completeLocations <- NULL
corrData <- NULL
我尝试使用cor()生成另一个数据框,该数据框只包含每个csv文件中2列的cor值。
for (monitor in monitor_list) {
locationInfo <- read.csv(monitor)
corrData <- rbind(corrData, cor(locationInfo$sulfate, locationInfo$nitrate, use = "complete.obs"))
completeLocations <- rbind(completeLocations, sum(complete.cases(locationInfo)))
}
它会抛出此错误
cor中的错误(locationInfo $ sulfate,locationInfo $ nitrate,use = &#34; complete.obs&#34;):没有完整的元素对
我知道这可以做到,因为当我在循环外运行完全相同的东西时,它会返回列表中最后一个csv文件的相关性。
print(cor(locationInfo$sulfate, locationInfo$nitrate, use = "complete.obs"))
我对R来说比较新,我觉得我在循环中遗漏了一些东西,我只是不确定它是什么......
答案 0 :(得分:2)
以下是复制该错误的一种方法
dd<-data.frame(x=c(1:10, rep(NA,10)), y=c(rep(NA, 10), 1:10))
cor(dd$x, dd$y, use="complete.obs")
因此,您所有的硝酸盐和硫酸盐值都可能是“NA&#39;或者当一个人不是&#39; NA&#39;时,另一个人总是&#39; NA&#39;。因此,请检查您的locationInfo
data.frame是否符合预期。