在R中的For循环中使用cor()获取错误以获取csv文件列表

时间:2014-05-17 23:05:54

标签: r csv for-loop variance

我有一个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来说比较新,我觉得我在循环中遗漏了一些东西,我只是不确定它是什么......

1 个答案:

答案 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是否符合预期。