如何在data.frame列中使用IF计数,这些单元格具有缺失值(NA)?

时间:2014-02-21 13:49:53

标签: r

我有一个名为“selPOGs2”的data.frame对象。在这个data.frame中我添加了一列“GeneID”。在将data.frame转换为字符后,我在“GeneID”列中添加数据。这些数据从查询返回到数据库。如果在数据库中找不到答案,则在GeneID列的相应单元格中放置NA。 该列看起来像这样:

  

块引用

   GeneID
  1. NA
  2. NA
  3. 14297062
  4. 14006762
  5. 11538038
  6.   

    块引用

    我想计算在GeneID列中找到NA的次数。 我写了以下代码:

      #convert selPOGs2 from factor to character (to make is is really character and not factor)
      selPOGs2 <- data.frame(lapply(selPOGs2, as.character), stringsAsFactors=FALSE)
    
      a=0; is.numeric(a)
      for(c in selPOGs2[,1])
      {b <- as.character(c) 
          if(b[1]== NA_character_) 
          {  a=a+1   }
          else {a=a}
      }
    

    我收到以下错误:

    Error in if (b[1] == NA_character_) { : missing value where TRUE/FALSE needed
    

    无论我将b [1]与“14297062”或任何其他“......”进行比较,我都会得到同样的错误。

    如果我评论与IF相关的代码,则c或b [1]的值报告为“14297062”,例如

          a=0; is.numeric(a)
          for(c in selPOGs2[,1])
          {b <- as.character(c) 
              #if(b[1]== NA_character_) 
              #{  a=a+1   }
              #else {a=a}
          }
    

    但是,只要取消注释IF行,c或b [1]的值就会报告为NA_character _。

    如果我使用

     a=0; is.numeric(a)
      for(c in selPOGs2[,1])
      {b <- as.character(c) 
          if(1==1) 
      }
    

    c或b [1]的值再次报告为“14297062”,例如

1 个答案:

答案 0 :(得分:1)

您可以使用

sum(is.na(selPOGs2$GeneID))

计算NA s。