【问题标题】:Cor function in R producing errorsR中的Cor函数产生错误
【发布时间】:2016-10-21 12:54:24
【问题描述】:

我一直在尝试编写一个函数,该函数采用数据文件目录和完整案例的阈值,并计算硫酸盐和硝酸盐之间的相关性,用于监控完全观察到的案例数量(所有变量)更大的位置超过阈值。该函数应返回满足阈值要求的监视器的相关向量。如果没有监视器满足阈值要求,则该函数应返回长度为 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
}

【问题讨论】:

  • 至少有if缺失的条件。我认为它意外地在括号内。

标签: r function correlation


【解决方案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)
}

【讨论】:

  • 感谢您的代码,但您能在我的代码中提及错误吗?
  • 如果你把你的函数放在我的旁边,那么错误在哪里就很明显了。例如,你不是用你的填充向量中的元素,而是每次重写cor.varcor.var 的行在if 语句中应该在它之后,等等。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-10
  • 1970-01-01
  • 2022-01-07
  • 1970-01-01
相关资源
最近更新 更多