web-dev-qa-db-fra.com

Masquage des NA lors de l'impression d'une trame de données dans knitr

J'essaie d'imprimer une table en knitr à partir d'un bloc de données en utilisant xtable. Le tableau de l'exemple ci-dessous a les dimensions 3x7 mais la troisième ligne n'a qu'une seule valeur, dans la deuxième colonne. Les autres cellules de la troisième rangée sont "NA".

Lorsque je compile le document, existe-t-il un moyen d'empêcher Knitr d'imprimer les NA de la troisième ligne, donc au lieu de NA, j'ai juste un espace vide?

Il semble que cela devrait être une solution simple mais je ne peux pas trouver où/comment cacher les NA. Est-ce un changement que je dois apporter au bloc de données ou est-ce une option xtable ou knitr que je dois changer?

Exemple de code 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}
33
Matt

Vous pouvez définir l'option knitr knitr.kable.na = '' '' pour les blancs ou tout autre caractère souhaité.

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

L'astuce que j'utilise est un peu brutale, mais elle semble fonctionner (dans mes cas d'utilisation, c'est-à-dire):

out <- knitr::kable(...)
cat(gsub('\\bNA\\b', '  ', out), sep='\n')
5
r2evans