我必须编写一个函数,其中包含数据文件的目录和完整案例的阈值,并计算每个文件中硫酸盐和硝酸盐(两列)之间的相关性,其中完全观察到的病例数量所有变量)大于阈值。该函数应返回满足阈值要求的监视器的相关向量。如果没有文件符合阈限要求,则函数应该返回长度的数字矢量0这个函数的原型如下NA列之间的相关性
我的代码看起来像这样
corr <- function(directory,threshold=0){
a<-list.files("specdata")
for (i in a) {
data <- read.csv(paste(directory, "/", i, sep =""))
x<-complete.cases(data)
j<-sum(as.numeric(x))
sulfate<-data[,2]
nitrate<-data[,3]
b<-cor(sulfate,nitrate)
}
if (j>threshold)
return(b)
else
numeric()
}
没有错误messege
如果键入
ž< -corr( “specdata”)
头(z) [1]不适用
我不知道问题是什么。我不知道列中的NA值是否与它有关。我认为我的代码中缺少一些东西。我认为read.csv在每个文件需要一个数据帧时创建一个唯一的数据帧,但我不明白为什么在这种情况下返回值是NA(当没有阈值时)。
但是,如果我介绍一个更大的阈值(1000):
z<-corr("specdata",1000)
head(z)
numeric(0)
预期输出我需要的是
cr <- corr("specdata", 150)
head(cr)
[1] -0.01895754 -0.14051254 -0.04389737 -0.06815956 -0.12350667 -0.07588814
'硫酸<-data [X,2];硝酸盐<-data [x,3]' – Roland
好吧,现在它似乎正在工作,但不是预期的输出。难道是这些文件未被正确加载?我的csv文件在001,002,003,...,但我没有使用sprintf(%03d),因为我使用了list.files,而这似乎工作。 –
您在循环中覆盖b。 –