【发布时间】:2018-07-11 01:38:22
【问题描述】:
我正在尝试完成第二周的 coursera R 课程作业,但无法弄清楚我的代码出了什么问题,因为我在运行它时得到了 NA 值。目标是计算完全观察到的病例数(所有变量)大于阈值的监测位置的硫酸盐和硝酸盐之间的相关性。该函数应返回满足阈值要求的监视器的相关向量。我做了一些基本的调试尝试(使用 print 语句),并且相信我的问题在 if 语句的某个地方。有什么想法/帮助/建议吗?
代码的数据文件在这里:https://d396qusza40orc.cloudfront.net/rprog%2Fdata%2Fspecdata.zip
代码如下:
corr <- function(directory, threshold = 0) {
#list of all csv files
filelist <- list.files(path = directory, pattern = ".csv", full.names = TRUE)
#vector for values to be input into
cor_vector <- numeric()
#loop for each file in list
for (i in 1:length(filelist)) {
data <- read.csv(filelist[i])
cc <- sum(complete.cases(data))
if (cc > threshold){
compsulfate <- data[which(!is.na(data$sulfate)), ]
compnitrate <- data[which(!is.na(data$nitrate)), ]
cor_vector <- c(cor_vector, cor(data$sulfate,data$nitrate))
}
}
return(cor_vector)
}
【问题讨论】:
-
你已经对
compsulfate和compnitrate中的非NA元素进行了子集化,那你为什么不在cor中使用呢?
标签: r