首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在R 3.1.1中循环文件时将cor()值附加到向量

在R 3.1.1中循环文件时将cor()值附加到向量
EN

Stack Overflow用户
提问于 2014-10-20 09:53:30
回答 1查看 654关注 0票数 0

我正在尝试编写一个遍历包含332个文件的目录的函数。每个文件包含一个空气污染数值的数据框。两个柱是硝酸盐和硫酸盐。

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

这是我的伪代码:

代码语言:javascript
复制
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)
    }
}

当我手动编写这段代码(从注释开始)时,它工作得很好,并且我得到了我想要的结果,这是一个特定长度的相关向量。

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

这让我感到困惑,因为它在手动输入时不是这样的:只有在我运行函数时才会发生这种行为。在这两种情况下,函数的行为应该没有区别。我该如何解决这个问题呢?

EN

回答 1

Stack Overflow用户

发布于 2014-10-20 12:32:24

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

代码语言:javascript
复制
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)
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26457510

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档