Как сделать числовые поля в Flextable пустыми

Как показано в следующем MWE, как NA в количестве бананов может стать пустым вместо того, чтобы показывать "NA"? Я хотел бы, чтобы числовые столбцы работали как символьные столбцы (см. Цвет яблок в MWE).

library(data.table)
library(flextable)
the.data <- data.table(Fruit=c("Apples", "Oranges", "Bananas", "Pears"), Amount=c(4L, 8L, NA_integer_, 2L), Color=c(NA_character_, "Orange", "Yellow", "Green"))
the.ft <- flextable(the.data)
the.ft

Одним из способов может быть преобразование числового столбца в символ, но, возможно, есть лучший способ.

2 ответа

Решение

Я буду работать над интеграцией этого случая в пакет. Между тем, следующий код позволяет отображать пустое значение для NA.

library(flextable)
the.data <- data.table(
  Fruit=c("Apples", "Oranges", "Bananas", "Pears"), 
  Amount=c(4L, 8L, NA_integer_, 2L), 
  Color=c(NA_character_, "Orange", "Yellow", "Green"))

the.ft <- regulartable(the.data)
the.ft <- set_formatter(
  the.ft, 
  Amount = function(x) ifelse(is.na(x), "", sprintf("%d", x) ),
  Color = function(x) ifelse(is.na(x), "", x )  
  )
the.ft

В начале этой недели мне было интересно то же самое, и я не нашел простого способа сделать это в течение flextable, А пока этот код преобразует Amount для символов с использованием канала и при этом сохраняет типы столбцов исходного фрейма данных.

library(dplyr)

the.data %>%
         mutate(Amount = if_else(is.na(Amount), "", as.character(Amount))) %>%
         flextable()

Другие вопросы по тегам