在knitr中打印数据框时隐藏NA

时间:2014-12-23 19:03:41

标签: r knitr na xtable

我正在尝试使用xtable从数据框中打印knitr中的表。下面示例中的表的尺寸为3x7,但第三行中的第三行只有一个值。第三行中的其余单元格为“NA”。

当我编译文档时,有没有办法防止knitr在第三行打印NA,所以不是NA我只是有空格?

感觉这应该是一个简单的解决方案,但我不知道在哪里/如何隐藏NA的。这是我需要对数据框进行的更改还是我需要更改的xtable或knitr选项?

示例编织代码:

\documentclass{article}

<< data1, echo=FALSE,  warning=FALSE, message=FALSE >>=

require(xtable)

  FY.2014 <- 0.019
  FY.2015 <- ((7000)  - (6925.9)) / (6925.9)
  FY.2016 <- ((8000)  - (7000))   / (7000)
  FY.2017 <- ((9000)  - (8000))   / (8000)
  FY.2018 <- ((10000) - (9000))   / (9000)
  FY.2019 <- ((11000) - (10000))  / (10000)

  PC      <- data.frame(FY.2014, FY.2015, FY.2016, FY.2017, FY.2018, FY.2019)
  PC.1    <- paste(round(PC*100, digits=1), "%", sep="")


 FY.2014 <- 130.1
 FY.2015 <- 7000  - 6925.9
 FY.2016 <- 8000  - 7000
 FY.2017 <- 9000  - 8000
 FY.2018 <- 10000 - 9000
 FY.2019 <- 11000 - 10000

 AB      <- data.frame(FY.2014, FY.2015, FY.2016, FY.2017, FY.2018, FY.2019)
 AB.1    <- paste(round(AB , digits = 2))


    FY.2014 <- as.numeric(c(""))
    FY.2015 <- 7242.9
    FY.2016 <- as.numeric(c(""))
    FY.2017 <- as.numeric(c(""))
    FY.2018 <- as.numeric(c(""))
    FY.2019 <- as.numeric(c(""))

    PF      <- data.frame(FY.2014, FY.2015, FY.2016, FY.2017, FY.2018, FY.2019)
    PF.1    <- paste(round(PF , digits = 2))

     FTable  <- rbind( PC.1, AB.1, PF.1)

      rownames(FTable) <- c( 'Percent Change from the Previous Year', 
                             'Absolute Change from Previous Year', 
                             'December CY13 Forecast')
      colnames(FTable) <- c( 'FY 2014', 'FY 2015', 'FY 2016', 'FY 2017', 'FY 2018',    'FY 2019')

@ 

\begin{document}
<<Table 1 , echo=FALSE, eval=TRUE, results='asis', fig.width = 5, fig.height = 2,     message=FALSE, fig.align='center', warning=FALSE>>=

          xFTable  <- xtable(FTable, big.mark=",")

          print(xFTable) 
@
\end{document}

1 个答案:

答案 0 :(得分:46)

您可以为空白或任何你想要的角色设置knitr选项knitr.kable.na =''''。

```{r echo=FALSE, results='asis'}
    options(knitr.kable.NA = '')
    knitr::kable(lowerTri, digits=2)
```