2014-12-23 11 views
12

Ich versuche, eine Tabelle in Knitr aus einem Datenrahmen mit Xxtable zu drucken. Die Tabelle im Beispiel unten hat die Dimensionen 3x7, aber die dritte Zeile hat nur einen Wert in der zweiten Spalte. Der Rest der Zellen in der dritten Reihe ist 'NA'.Verbergen von NA beim Drucken eines Datenrahmens in Knit

Wenn ich das Dokument kompiliere, gibt es eine Möglichkeit zu verhindern, dass knitr die NAs in der dritten Zeile druckt, also habe ich anstelle von NA nur Leerzeichen?

Es fühlt sich an, als ob dies eine einfache Lösung sein sollte, aber ich kann nicht herausfinden, wo/wie die NA's zu verbergen sind. Ist es eine Änderung, die ich am Datenrahmen vornehmen muss oder ist es eine xtable oder knitr Option, die ich ändern muss?

Probe knitr Code:

\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

Sie könnten versuchen 'print (xFTable, na.print =" ")' Möglicherweise müssen Sie 'print.default' oder eine andere Druckmethode verwenden, um das Dokument zu drucken. Aber 'na.print' erscheint in einigen Druckmethoden –

+0

Oder wenn Sie mit' Markdown' Tabellen anstelle von LaTeX zufrieden sind, dann könnten Sie ['pander'] (http://rapporter.github.io/pander/ # markdown-tables) Hier können Sie festlegen, wie 'NA' mit dem 'missing' Argument oder [globale Option] (http://rapporter.github.io/pander/#general-options) gedruckt werden sollen. – daroczig

+0

Danke für den Vorschlag, aber ich habe versucht, drucken (xFTable, na.print = "") ohne Erfolg. Ich habe na.print in der xtable-Dokumentation nicht gefunden. – Matt

Antwort

4

Der Trick, den ich verwenden ist ein bisschen Brute-Force, aber es scheint zu funktionieren (in meinem Anwendungsfall, das ist):

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

Ich denke, '' \\ bNA \\ n'' sollte '' \\ bNA \\ b'' sein? – YvanR

+0

Diese Antwort sollte nicht länger relevant sein, da die Änderungen an "knitr" geändert wurden. Ich schlage stattdessen @ svannoy's Antwort vor. – r2evans

+0

In meinem Fall (Knit to pdf) hat es sich als sehr nützlich erwiesen, da die "neuere" Lösung nicht funktioniert hat - danke! – Will

21

Sie kann die knitr-Option knitr.kable.na = '' '' für Leerzeichen oder das gewünschte Zeichen festlegen.

+0

Wo stellst du es ein? Es funktioniert nicht für mich. Ist es "knitr.kable.na" oder "knitr.kable.NA"? Verwenden Sie einfache oder doppelte Anführungszeichen? – Costin

+2

@Costin, ich habe Kontext hinzugefügt, ich lege es in einem Code-Chunk. – svannoy

+2

Sie müssen "Knitr" Version 1.15 oder höher verwenden: https://github.com/yihui/knitr/releases/tag/v1.15. – Matt

Verwandte Themen