如何使Flextable中的数字字段为空

时间:2018-01-31 19:34:52

标签: r 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 个答案:

答案 0 :(得分:3)

我将努力将该案例整合到包中。同时,以下代码可让您显示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

答案 1 :(得分:1)

我本周早些时候想知道同样的事情,并且没有在flextable内找到一种直截了当的方法。与此同时,此代码使用管道将Amount转换为字符,这样做可以保留原始数据框的列类型。

library(dplyr)

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

enter image description here