我有一个从以下函数派生的数据框:
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
的行?
答案 0 :(得分: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
的行都被抛出。