corr <- function(directory, threshold) {
files <- list.files(directory, full.names = TRUE)
nu <- numeric()
for(i in length(files)) {
my_data <- read.csv(files[i])
if (sum(complete.cases(my_data)) >= threshold) {
vec_sul <- my_data[complete.cases(my_data),]$sulfate
vec_nit <- my_data[complete.cases(my_data),]$nitrate
nu <- c(nu, cor(vec_sul, vec_nit))
}
}
nu
}
我有一个目录中的.csv文件列表,我希望将其作为参数传递给上面说明的函数。我还将阈值作为第二个参数传递。目的是通读directory参数中的所有文件,并检查文件的完整情况是否超过作为第二个arg传递的阈值。
符合此标准的那些文件将被进一步检查,并对其中的两个变量:硫酸盐和硝酸盐之间的相关性进行评估。与具有比阈值更完整的情况的文件相关联的一系列这样的相关值将被连接到数字变量向量。在循环执行的最后,我希望函数返回包含“ if”循环中评估的一系列相关值的向量。
cr <-corr(“ specdata”,150)当我在控制台中运行上述代码时,我得到一个数值变量,该变量为null。有人可以帮我修复代码吗?
尽管这种错误已经被看到很多次了,但它仍然会发生。你要
i in 1:length(files)
您得到了numeric(0)
(您所说的“数字空”),因为循环仅读取最终文件。我猜最终文件不令人满意,sum(complete.cases(my_data)) >= threshold
因此没有添加任何内容nu
,初始化为numeric(0)
。
另外,我想指出的是
vec_sul <- my_data[complete.cases(my_data),]$sulfate
vec_nit <- my_data[complete.cases(my_data),]$nitrate
nu <- c(nu, cor(vec_sul, vec_nit))
可以替换为
nu <- c(nu, with(my_data, cor(sulfate, nitrate, use = "complete.obs")))
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句