【发布时间】:2015-07-22 12:17:36
【问题描述】:
我应该在 R 中编写一个函数,以便在每个文件的完整案例数高于指定阈值时计算“硝酸盐”和“硫酸盐”两种污染物之间的相关性,有 332 个单独的 CSV 文件,这里是到目前为止我得到了什么,但是当我运行它而不是矢量时,我会得到 NA 答案。我将非常感谢任何帮助,谢谢
corr <- function(directory, threshold=0) {
data <- setwd("C:\\Users.....specdata")
files <-list.files(data, full.names=FALSE)
nobs <- c()
threshold <- c()
correlation_list <- c()
for (i in 1:332){
dat <- read.csv(files[i], sep=",")
complete_cases <- dat[complete.cases(dat),]
nobs <- c(nobs,nrow(complete_cases))
good <- complete_cases [(nobs> threshold),]
#if (nobs> threshold) {
correlation_list <- c(correlation_list, cor(good["nitrate"], good["sulfate"]))
#}
return(correlation_list)
}
【问题讨论】:
-
手动运行你的代码。运行启动代码,设置 i = 1,运行循环中的代码,检查它,设置 i = 2,运行循环中的代码,检查它。是你所期望的吗?
-
还要注意您的退货声明所在的位置。
-
您是否在 return(correlation_list) 之前错过了 } 以关闭 for ?
-
同时检查
threshold。您允许您的用户将其定义为参数,然后使用threshold <- c()将其擦除。所以(nobs> threshold)将始终返回logical(0)。 -
非常感谢大家的回答!
标签: r