如题,直接上代码:
complete=function(directory="specdata",id=1:332){
files=list.files(directory,full.names=TRUE)
nobs<- c()
for(i in id){
nobs[i]=sum(complete.cases(read.csv(files[i])))
}
nobs=na.omit(nobs)
comp=data.frame(id,nobs)
print(comp)
}
这段代码的意思就是根据id来对相应文件里面的完整个案进行计数,比如id为1:30,则函数输出的是一个数据框,第一列是id,第二列nobs对应是第1到第30个csv文件里的完整个案数目。那么问题来了:
当我输入complete(directory="specdata",id=25:30),时,结果如下:
id nobs
1 25 463
2 26 586
3 27 338
4 28 475
5 29 711
6 30 932
而id为30:25,时,结果如下:
id nobs
1 30 463
2 29 586
3 28 338
4 27 475
5 26 711
6 25 932
可以看到无论id是25:30还是30:25,第二列nobs的值的顺序都是一样的,也就是说在第二个输出结果中,即使第一行id的值为30,其对应的nobs却仍然是第25个csv文件中完整个案的数目,求问为什么会出现这种情况?如何纠正呢?谢谢!