Скрытие NA при печати фрейма данных в Knitr

Я пытаюсь распечатать таблицу в Knitr из фрейма данных, используя xtable. Таблица в приведенном ниже примере имеет размеры 3x7, но третья строка имеет только одно значение во втором столбце. Остальные ячейки в третьем ряду — «Нет данных».

Когда я компилирую документ, есть ли способ предотвратить печатать NA в третьей строке, чтобы вместо NA у меня было просто пустое место?

Такое ощущение, что это должно быть простым решением, но я не могу понять, где и как скрыть NA. Это изменение, которое мне нужно внести в фрейм данных, или мне нужно изменить параметр xtable или yarn?

Пример кода трикотажа:

\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}

person Matt    schedule 23.12.2014    source источник
comment
Вы можете попробовать print(xFTable, na.print = "") Возможно, вам придется использовать print.default или другой метод печати для печати документа. Но na.print появляется во многих методах печати.   -  person Rich Scriven    schedule 23.12.2014
comment
Или, если вас устраивают таблицы markdown вместо LaTeX, вы можете использовать pander где вы можете указать, как печатать NA с аргументом missing или глобальным параметром.   -  person daroczig    schedule 23.12.2014
comment
Спасибо за предложение, но я безуспешно пробовал print(xFTable, na.print=). Я не нашел na.print в документации xtable.   -  person Matt    schedule 24.12.2014


Ответы (2)


Вы можете установить для заготовок опцию вязания, kntr.kable.na = '' '', или любой другой символ, который вы хотите.

```{r echo=FALSE, results='asis'}
    options(knitr.kable.NA = '')
    knitr::kable(lowerTri, digits=2)
```
person svannoy    schedule 24.11.2016
comment
Где вы его устанавливаете? Это не работает для меня. Это knitr.kable.na или knitr.kable.NA? Используете ли вы простые или двойные кавычки? - person Costin; 25.11.2016
comment
@Costin, я добавил контекст, я поместил его в фрагмент кода. - person svannoy; 25.11.2016
comment
Вам необходимо использовать knitr версии 1.15 или выше: github.com/yihui/knitr/ релизы/тег/v1.15. - person Matt; 01.12.2016
comment
Это решение также работает для функции papajas apa_table (добавление комментария для помощи поисковым системам в Интернете) - person Mikko; 20.06.2018
comment
@svannoy можно ли указать форматированную строку, например. 'null', но чтобы он печатался курсивом? - person Ryan Hill; 17.12.2018

Трюк, который я использую, немного грубоват, но, похоже, он работает (то есть в моих случаях использования):

out <- knitr::kable(...)
cat(gsub('\\bNA\\b', '  ', out), sep='\n')
person r2evans    schedule 29.04.2015
comment
Я думаю, '\\bNA\\n' должно быть '\\bNA\\b'? - person YvanR; 24.06.2016
comment
Этот ответ больше не должен быть актуальным, учитывая недавние изменения в knitr. Вместо этого я предлагаю использовать ответ @svannoy. - person r2evans; 24.05.2017
comment
В моем случае (связать в pdf) это оказалось очень полезным, так как новое решение не сработало — спасибо! - person Will; 29.01.2018