Xtableを使用して、データフレームからknitrでテーブルを印刷しようとしています。以下の例の表の寸法は3x7ですが、3行目には2列目に1つの値しかありません。 3行目の残りのセルは「NA」です。
ドキュメントをコンパイルするとき、knitrが3行目にNAを印刷しないようにする方法はありますか?そのため、NAの代わりに空白スペースしかありませんか?
これは簡単な解決策のように思えますが、NAをどこにどのように非表示にするのかわかりません。データフレームに加える必要がある変更ですか、それとも変更する必要があるxtableまたはknitrオプションですか?
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}
Knitrオプションknitr.kable.na = '' ''を空白または任意の文字に設定できます。
```{r echo=FALSE, results='asis'}
options(knitr.kable.NA = '')
knitr::kable(lowerTri, digits=2)
```
私が使用するトリックは少し力ずくですが、それは機能するようです(私のユースケースでは):
out <- knitr::kable(...)
cat(gsub('\\bNA\\b', ' ', out), sep='\n')