首页 文章

在循环遍历R 3.1.1中的文件时,将cor()值附加到向量

提问于
浏览
0

我正在尝试编写一个通过332个文件的目录的函数 . 每个文件都包含空气污染值的数据框 . 两列是硝酸盐和硫酸盐 .

在浏览每个文件时,我需要确定它们是否符合完整案例的阈值标准 . 基本上,代码应该省略任何具有N / A或缺少值的行 . 如果它们符合标准,我将需要使用 cor() 函数计算硝酸盐和硫酸盐之间的相关性 .

这是我的伪代码:

corr <- function(directory, threshold = 0){
setwd(paste("C:/...", directory, sep = "/"))

# Writing from here on works fine

correlations <- numeric()
files <- list.files(getwd(), full.names = TRUE)
for (i in 1:332) {
    read_file <- read.csv(file[i])
    complete_observation <- read_file[complete.cases(read_file), ]
    get number_complte using nrow
    if (number_complete >= threshold) {
        attach(complete_data)
        correlations <- c(correlations, cor(sulfate, nitrate))
        detach(complete_data)
    }
}

当我手动写这个(从评论开始),它工作正常,我得到我正在寻找的结果,这是一定长度的相关向量 .

但是,当我通过调用我创建的函数(从代码的开头开始)尝试它时,我得到一个NULL向量 . 我注意到,当我在附加cor数据后嵌套返回(相关)时,它返回了一个值,这表示它在满足条件时计算相关值并将其存储在最后,但是一旦它退出循环它被重新初始化为0 .

这让我感到困惑,因为它在手动输入时没有这种行为:只有在我运行该函数时才会出现这种情况 . 两种情况之间的功能行为应该没有区别 . 我怎样才能解决这个问题?

1 回答

  • 0

    我能够通过在第二个右括号之后放置一个return语句来使我的函数以我想要的方式工作,基本上在每个for循环迭代之后

    corr <- function(...){    
    correlation <- numeric()
      for(...){
      ...
      if (num_com >= threshold){
        correlation <- c(correlation, cor(x,y))
        correlation <- c(correlation, cor(data$nitrate, data$sulfate))
        }
      }
      return(correlation)
    }
    

相关问题