计算不包含“ NA”的数据帧的行

Dou*_*Fir 4 r missing-data dataframe

可能重复:
R-删除data.frame中具有NA的行

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

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
           )
       }
Run Code Online (Sandbox Code Playgroud)

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

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

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

Jon*_*sen 5

替换此行:

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被抛出。

  • 嗯,对我来说,complete.cases似乎返回一个逻辑向量,而不是过滤后的数据帧。所以我必须执行`sum`而不是`nrow` (10认同)