我有一个看起来像这样的表:
Web method running: [https://[redacted].visualstudio.com/_apis/wit/wiql] (POST)wiql[wit]
一切都很好,但是我想做的是在最后一行完全不显示任何数字,因为它们显示了边距(实际情况)。我可以操纵R中的特定单元格及其数字吗?
谢谢!
答案 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输出的样子: