如何用kables中的空格替换0

时间:2018-01-11 19:46:45

标签: r kableextra kable

我正在使用kable函数创建一个相当大的html表,而且这个表中有很多0。为了更清楚地显示相关信息,我试图通过用空格替换它们来隐藏表中的0。

现在,我正在尝试这样的事情,但它不起作用:

my_table = knitr::kable(...)
cat(gsub(0," ",my_table), sep = '\n')

与上述类似的东西可以删除NA,但我似乎无法让它适用于0。

提前致谢!

编辑:示例数据:

Product = c('A','B','A','A','C','B')
Month = c('Jan', 'Feb', 'Feb', 'Apr', 'Jan', 'Feb')
my_data = data.frame(Product, Month)
my_table = table(my_data)
kable(my_table) #This has the 0's which I don't want

Product | Month

A       | Jan

B       | Feb

A       | Feb

A       | Apr

C       | Jan

B       | Feb

当前输出:

----Jan  Feb  Mar Apr

A  1 1 0 1

B  0 2 0 0

C  1 0 0 0

期望的输出:

----Jan Feb Mar Apr

A 1 1 - 1

B - 2 - -

C 1 - - -

除了" - "将是一个空白而不是破折号

EDIT2:没关系,我发现它虽然这真的很糟糕:

my_kable = knitr::kable(my_table)
gsub(0, ' ', my_kable)

洛尔

3 个答案:

答案 0 :(得分:3)

您的原始gsub无法正常工作的原因是它将表格展平为向量。维护表结构的许多选项之一是使用replace函数:

knitr::kable(replace(my_table, my_table==0, ""))

#|   |Apr |Feb |Jan |
#|:--|:---|:---|:---|
#|A  |1   |1   |1   |
#|B  |    |2   |    |
#|C  |    |    |1   |

答案 1 :(得分:0)

您可以使用基础R gsub()

gsub(0, " ", kable(my_table))

获得:

|   | Apr| Feb| Jan|
|:--|---:|---:|---:|
|A  |   1|   1|   1|
|B  |    |   2|    |
|C  |    |    |   1|

答案 2 :(得分:0)

您可以尝试:

gsub(" 0", "  ", kable(my_table))