使用 dplyr mutate 在 RMarkdown for pdf 中使用 extraKable 遮蔽 table?
Shade table with extraKable in RMarkdown for pdf using dplyr mutate?
我想根据不同的值集对 table 应用不同的颜色阴影。我正在使用 kableExtra 在 Rmarkdown 中创建这个 table。我希望 0 和 <.10 之间的值保持不变。 >=.10 和 <.20 的值以黄色阴影显示。值 >=.20 为红色阴影。
df
name category 1 categry 2 category a category b
ab .01 .45 .19 .09
410 .12 .01 .05 .66
NW 5th .25 .22 .01 .16
这就是我用以下方式制作现有 table 的内容:
library(knitr)
library(dplyr)
kable(df, caption = "warning values", digits = 2, format = "latex",
booktabs = T)%>%
kable_styling(latex_options = c("striped"))%>%
landscape()%>%
row_spec(0, angle = 45)
我不确定如何使用 mutate 和 cel_spec 函数来应用于整个 table。 table 列和行名称随每个报告动态变化。
编辑:马丁的回答很有效。直到我试图清理我的号码。我的实际输入文件有更多数字,如 Martin 的回答。它还具有包含下划线的文件名和行名。 (这在使用此答案时引起了问题,但我找到了解决方法。)
#replace any "_" with escaped "\_" for magrittR/latex compatability
names(df) <- gsub(x = names(df), pattern = "\_", replacement =
"\\_")
df$name <- gsub('\_', '\\_', df$name)
#format numbers
df <- format(df, digits=0, nsmall=3, scientific = FALSE)
替换工作正常,是数字格式破坏了答案。一切仍然执行得很好,但我失去了彩色 table。
想法?
这是执行此操作的方法。请注意,我使用了 magrittr 中的复合赋值运算符。
---
title: test
output: pdf_document
---
```{r, echo = F, warning = F, message = F}
library(knitr)
library(dplyr)
library(kableExtra)
library(magrittr)
df <- data.frame(A = runif(4, 0, 1), B = runif(4, 0, 1), row.names = letters[1:4])
paint <- function(x) { # our painting function
ifelse(x < 0.1, "white", ifelse(x < 0.2, "yellow", "red"))
}
df %<>%. # compound assignment operator
mutate_if(is.numeric, function(x) { # conditional mutation, if the column type is numeric
cell_spec(x, background = paint(x), format = "latex")
})
kable(df, caption = "warning values", digits = 2, format = "latex",
booktabs = T, escape = F) %>%
landscape()%>%
row_spec(0, angle = 45)
```
我想根据不同的值集对 table 应用不同的颜色阴影。我正在使用 kableExtra 在 Rmarkdown 中创建这个 table。我希望 0 和 <.10 之间的值保持不变。 >=.10 和 <.20 的值以黄色阴影显示。值 >=.20 为红色阴影。
df
name category 1 categry 2 category a category b
ab .01 .45 .19 .09
410 .12 .01 .05 .66
NW 5th .25 .22 .01 .16
这就是我用以下方式制作现有 table 的内容:
library(knitr)
library(dplyr)
kable(df, caption = "warning values", digits = 2, format = "latex",
booktabs = T)%>%
kable_styling(latex_options = c("striped"))%>%
landscape()%>%
row_spec(0, angle = 45)
我不确定如何使用 mutate 和 cel_spec 函数来应用于整个 table。 table 列和行名称随每个报告动态变化。
编辑:马丁的回答很有效。直到我试图清理我的号码。我的实际输入文件有更多数字,如 Martin 的回答。它还具有包含下划线的文件名和行名。 (这在使用此答案时引起了问题,但我找到了解决方法。)
#replace any "_" with escaped "\_" for magrittR/latex compatability
names(df) <- gsub(x = names(df), pattern = "\_", replacement =
"\\_")
df$name <- gsub('\_', '\\_', df$name)
#format numbers
df <- format(df, digits=0, nsmall=3, scientific = FALSE)
替换工作正常,是数字格式破坏了答案。一切仍然执行得很好,但我失去了彩色 table。 想法?
这是执行此操作的方法。请注意,我使用了 magrittr 中的复合赋值运算符。
---
title: test
output: pdf_document
---
```{r, echo = F, warning = F, message = F}
library(knitr)
library(dplyr)
library(kableExtra)
library(magrittr)
df <- data.frame(A = runif(4, 0, 1), B = runif(4, 0, 1), row.names = letters[1:4])
paint <- function(x) { # our painting function
ifelse(x < 0.1, "white", ifelse(x < 0.2, "yellow", "red"))
}
df %<>%. # compound assignment operator
mutate_if(is.numeric, function(x) { # conditional mutation, if the column type is numeric
cell_spec(x, background = paint(x), format = "latex")
})
kable(df, caption = "warning values", digits = 2, format = "latex",
booktabs = T, escape = F) %>%
landscape()%>%
row_spec(0, angle = 45)
```