特定单元格中的控制位

时间:2018-07-12 18:03:32

标签: r digits

我有一个看起来像这样的表:

Web method running: [https://[redacted].visualstudio.com/_apis/wit/wiql] (POST)wiql[wit]

一切都很好,但是我想做的是在最后一行完全不显示任何数字,因为它们显示了边距(实际情况)。我可以操纵R中的特定单元格及其数字吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

您可以使用ifelse在不同的行中以不同的格式输出数字,如下例所示。但是,将需要花费一些额外的精力来获取最后一行中的值,以按位置值与上一行进行对齐:

library(knitr)
library(tidyverse)

# Fake data
set.seed(10)
dat = data.frame(category=c(LETTERS[1:6],"n"), replicate(3, rnorm(7, 100,20)))

dat %>% 
  mutate_if(is.numeric, funs(sprintf(ifelse(category=="n", "%1.0f", "%1.1f"), .))) %>% 
  kable(align="lrrr")
|category |    X1|    X2|    X3|
|:--------|-----:|-----:|-----:|
|A        | 100.4|  92.7| 114.8|
|B        |  96.3|  67.5| 101.8|
|C        |  72.6|  94.9|  80.9|
|D        |  88.0| 122.0|  96.1|
|E        | 105.9| 115.1| 118.5|
|F        | 107.8|  95.2| 109.7|
|n        |    76|   120|    88|

通过huxtable包,可以很容易地将值进行十进制对齐(有关表格式的更多信息,请参见the Vignette):

library(huxtable)

tab = dat %>% 
  mutate_if(is.numeric, funs(sprintf(ifelse(category=="n", "%1.0f", "%1.1f"), .))) %>% 
  hux %>% add_colnames()

align(tab)[-1] = "."

tab

这是从rmarkdown文档编织为PDF时PDF输出的样子:

enter image description here