【问题标题】:NA answer in calculating correlation in R在 R 中计算相关性时的 NA 答案
【发布时间】:2015-07-22 12:17:36
【问题描述】:

我应该在 R 中编写一个函数,以便在每个文件的完整案例数高于指定阈值时计算“硝酸盐”和“硫酸盐”两种污染物之间的相关性,有 332 个单独的 CSV 文件,这里是到目前为止我得到了什么,但是当我运行它而不是矢量时,我会得到 NA 答案。我将非常感谢任何帮助,谢谢

corr <- function(directory, threshold=0) {
    data <- setwd("C:\\Users.....specdata")
    files <-list.files(data, full.names=FALSE)
    nobs <- c()
    threshold <- c() 
    correlation_list <- c()
    for (i in 1:332){
            dat <- read.csv(files[i], sep=",") 
            complete_cases <- dat[complete.cases(dat),]
            nobs <- c(nobs,nrow(complete_cases))
            good <- complete_cases [(nobs> threshold),]
            #if (nobs> threshold) {
            correlation_list <- c(correlation_list, cor(good["nitrate"], good["sulfate"]))      
            #}
            return(correlation_list)
    }

【问题讨论】:

  • 手动运行你的代码。运行启动代码,设置 i = 1,运行循环中的代码,检查它,设置 i = 2,运行循环中的代码,检查它。是你所期望的吗?
  • 还要注意您的退货声明所在的位置。
  • 您是否在 return(correlation_list) 之前错过了 } 以关闭 for
  • 同时检查threshold。您允许您的用户将其定义为参数,然后使用threshold &lt;- c() 将其擦除。所以(nobs&gt; threshold) 将始终返回logical(0)
  • 非常感谢大家的回答!

标签: r


【解决方案1】:

相关性是协方差除以方差,因此如果您的一个维度的方差为零,您将得到除以零。

【讨论】:

    猜你喜欢
    • 2013-08-31
    • 1970-01-01
    • 2015-02-07
    • 1970-01-01
    • 2011-10-09
    • 1970-01-01
    • 2011-06-26
    • 1970-01-01
    • 2022-06-27
    相关资源
    最近更新 更多