【问题标题】:How to replace 0's with blank in kables如何用 kables 中的空白替换 0
【发布时间】:2023-04-04 17:58:01
【问题描述】:

我正在使用 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:没关系,即使这真的很hacky,我也想通了:

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

哈哈

【问题讨论】:

  • 您能否提供一个玩具示例,说明您将哪些数据放入knitr::kable()
  • 尝试引用 0 - "0"
  • 添加了我正在使用的数据类型的玩具示例
  • 最好用代码提供,方便我们导入。例如data.frame("Product" = LETTERS[1:4], etc.)
  • 好的,我为玩具数据集添加了一些代码

标签: r kableextra kable


【解决方案1】:

您原来的gsub 不起作用的原因是它将表格展平为矢量。维护表结构的众多选项之一是使用replace 函数:

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

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

【讨论】:

    【解决方案2】:

    你可以使用基础Rgsub():

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

    获得:

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

    【讨论】:

      【解决方案3】:

      你可以试试:

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

      【讨论】:

      • 避免替换非零数字中的零。此外,与“替换”解决方案相反,“gsub”解决方案保持数字右对齐。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-02-28
      • 2023-04-01
      • 2020-11-12
      • 1970-01-01
      • 2010-12-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多