问题是要我编写一个函数,该函数读取一个充满文件的目录,并报告每个数据文件中完全观察到的病例数。我的代码可以读取数据,但无法获取每个数据文件的缺失值数量。对于所有332个文件,它仅返回一种情况。
我认为问题可能是我只得到了最后一个完整的案件,而不是全部。但是我不知道应该使用哪种方法编写代码。
complete<-function(directory, id=1:332){
directory<-setwd("/Users/apple/Desktop/R coursera/specdata")
hwData<-numeric()
for (i in id){
if (i<100 & i>=10){
hwData<-read.csv(paste("0",as.character(i), ".csv",sep = ""), header = TRUE, sep = "", na.strings = c("NA","NAN"," "))
}
else if (i<10){
hwData<-read.csv(paste("0","0",as.character(i),".csv",sep = ""), header = TRUE, sep = "", na.strings = c("NA","NAN"," "))
}
else{
hwData<-read.csv(paste(as.character(i),".csv",sep = ""),header=TRUE,sep = "", na.strings = c("NA","NAN"," "))
}
nobs<-sum(complete.cases(hwData))
dFrame<-data.frame(id,nobs=rbind(sum(complete.cases(hwData))))
}
return(dFrame)
}
I got:
> complete("specdata",30:25)
id nobs
1 30 3287
2 29 3287
3 28 3287
4 27 3287
5 26 3287
6 25 3287
答案 0 :(得分:0)
在循环外启动一个空的数据框:
dFrame <- data.frame()
然后,循环将其与自身+新行绑定:
dFrame <- rbind(
dFrame,
data.frame(id = i, nobs = sum(complete.cases(hwData)))
)
请注意,您必须将循环变量i
分配给ID。
检查此解决方案,让我知道它是否有效。