在R

时间:2019-01-27 03:24:28

标签: r

我是R编程的新手。我有一个需求,并尝试使用for循环来解决。我有一个包含14个变量的数据框,其中某些行和列的值为空。我的要求是列出每个变量(列)中空值的数量。 我的以下代码实现了这一点:

for (x in names(df)){
  cat(paste("No of rows with empty value for", x, " variable:", 
nrow(df[df$x == '', ])))
}
nrow(df[df$x=='',])

在上面的nrow命令中,x值不能代替df$x == ''

需要一些专家帮助对其进行修复。

预先感谢

关于, Vin

2 个答案:

答案 0 :(得分:2)

尽管可以使用sapply来使代码更整洁。

sapply(df, FUN=function(x) sum(x == ''))

答案 1 :(得分:1)

我稍微修改了您的for循环,最后添加了换行符。如果对创建的布尔值求和要比对行计数要容易。

##Create some fake data

df <- data.frame(
    first_var = c(rep("",10),1:10),
    second_var = c(rep("",9), 1:11),
    third_var = c(rep("", 8), 1:12),
    fourth_Var = c(rep("", 7), 1:13)
)

for(i in names(df)){
  cat(paste0("No of rows with empty value for ",i, " variable:",sum(df[,i] == ""),"\n"))
}