R中的Cor函数产生错误

时间:2016-10-21 12:54:25

标签: r function correlation

我一直在尝试编写一个函数,它接受数据文件目录和完整案例的阈值,并计算监测位置的硫酸盐和硝酸盐之间的相关性,其中完全观察到的病例数(在所有变量上)更大超过门槛。该函数应返回满足阈值要求的监视器的相关向量。如果没有监视器满足阈值要求,那么该函数应该返回一个长度为0的数字向量。生成了多个错误,因此我在这里没有提到它们。

代码的数据文件在这里: 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 个答案:

答案 0 :(得分:1)

我稍微修改了一下这个函数来得到你想要的东西。这当然假设硫酸盐和硝酸盐总是在第2列和第3列中,并且该目录中没有其他csv(就好像这些列中有数字一样,相关系数会计算其他内容)。

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)
}