我正在尝试编写一个通过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 回答
我能够通过在第二个右括号之后放置一个return语句来使我的函数以我想要的方式工作,基本上在每个for循环迭代之后