Possible Duplicate:
R - remove rows with NAs in data.frame




我有一个从以下函数派生的数据框:

complete <- function(directory,id = 1:332) {

   csvfiles <- sprintf("/Users/myname/Desktop/%s/%03d.csv", directory, id)

   nrows <- sapply( csvfiles, function(f) nrow(read.csv(f)))

        rowlabels <- nrow(nrows)

        data.frame(id=sprintf('%3d', id),
            nobs=sapply(csvfiles,function(x) length(count.fields(x))),
            row.names=rowlabels
           )
       }


此函数计算对象csvfiles生成的目录中包含的每个文件中的行数。然后,它输出一个显示文件号以及行数(因此为两列)的数据帧

以为我有它,但是问题是我现在必须在存在NA实例的每个文件中排除行。

我将如何编辑它以忽略每个文件中的那些行,而仅计算不存在NA的行?

最佳答案

替换此行:


nrows <- sapply( csvfiles, function(f) nrow(read.csv(f)))


这行使用complete.cases函数:


nrows <- sapply( csvfiles, function(f) nrow(complete.cases(read.csv(f))))


complete.cases获取一个数据帧,并返回一个具有相同列的数据帧,但是所有包含至少一个NA的行都被抛出。

09-04 14:24