kable 中的粗体单元格(格式 = 乳胶)基于变量组的行向最大值
Bold cells in kable (format = latex) based on rowwise largest value by group of variables
工作示例
set.seed(1234)
df <- data.frame( x1 = rnorm(3), x2 = rnorm(3), z1 =rnorm(3), z2=rnorm(3))
产生
x1 x2 z1 z2
------- ------- ------- -------
-1.207 -2.346 -0.575 -0.890
0.277 0.429 -0.547 -0.477
1.084 0.506 -0.564 -0.998
然后我可以使用
导出到乳胶
kable(df,format = "latex", digits = 3)
但我想以粗体显示跨行最大的单元格(x1 与 x2,以及 z1 与 z2)。所以在这个例子中,x1=-1.207 和 z1=-0.575 将在第一行中以粗体显示,x2=0.429 和 z2=-0.477 将在第二行中以粗体显示,依此类推
所以最终输出应该是
\begin{tabular}{r|r|r|r}
\hline
x1 & x2 & z1 & z2\
\hline
\textbf{-1.207} & -2.346 & \textbf{-0.575} & -0.890\
\hline
0.277 & \textbf{0.429} & -0.547 & \textbf{-0.477}\
\hline
\textbf{1.084} & 0.506 & \textbf{-0.564} & -0.998\
\hline
\end{tabular}
任何帮助都会很棒!
将 kableExtra
的单元格条件格式与 tidyverse
包结合使用,这是一次尝试,尽管我是第一个承认这似乎需要大量工作的人。
我确定有更好的方法。
```{r results='asis'}
library(dplyr)
library(tidyr)
library(tibble)
library(stringr)
library(kableExtra)
set.seed(1234)
df <-
data.frame( x1 = rnorm(3), x2 = rnorm(3), z1 = rnorm(3), z2 = rnorm(3)) %>%
rowid_to_column() %>%
pivot_longer(-rowid)%>%
mutate(group = str_sub(name, 1, 1),
id = str_sub(name, -1, -1)) %>%
group_by(group, rowid) %>%
mutate(value = round(value, 3),
value = ifelse(value == max(value), cell_spec(sprintf("%.3f", value), "latex", bold = TRUE),
sprintf("%.3f", value))) %>%
ungroup() %>%
select(-c(group, id)) %>%
pivot_wider() %>%
select(-rowid)
kbl(df,
booktabs = TRUE,
escape = FALSE,
align = "r")
```
工作示例
set.seed(1234)
df <- data.frame( x1 = rnorm(3), x2 = rnorm(3), z1 =rnorm(3), z2=rnorm(3))
产生
x1 x2 z1 z2
------- ------- ------- -------
-1.207 -2.346 -0.575 -0.890
0.277 0.429 -0.547 -0.477
1.084 0.506 -0.564 -0.998
然后我可以使用
导出到乳胶kable(df,format = "latex", digits = 3)
但我想以粗体显示跨行最大的单元格(x1 与 x2,以及 z1 与 z2)。所以在这个例子中,x1=-1.207 和 z1=-0.575 将在第一行中以粗体显示,x2=0.429 和 z2=-0.477 将在第二行中以粗体显示,依此类推
所以最终输出应该是
\begin{tabular}{r|r|r|r}
\hline
x1 & x2 & z1 & z2\
\hline
\textbf{-1.207} & -2.346 & \textbf{-0.575} & -0.890\
\hline
0.277 & \textbf{0.429} & -0.547 & \textbf{-0.477}\
\hline
\textbf{1.084} & 0.506 & \textbf{-0.564} & -0.998\
\hline
\end{tabular}
任何帮助都会很棒!
将 kableExtra
的单元格条件格式与 tidyverse
包结合使用,这是一次尝试,尽管我是第一个承认这似乎需要大量工作的人。
我确定有更好的方法。
```{r results='asis'}
library(dplyr)
library(tidyr)
library(tibble)
library(stringr)
library(kableExtra)
set.seed(1234)
df <-
data.frame( x1 = rnorm(3), x2 = rnorm(3), z1 = rnorm(3), z2 = rnorm(3)) %>%
rowid_to_column() %>%
pivot_longer(-rowid)%>%
mutate(group = str_sub(name, 1, 1),
id = str_sub(name, -1, -1)) %>%
group_by(group, rowid) %>%
mutate(value = round(value, 3),
value = ifelse(value == max(value), cell_spec(sprintf("%.3f", value), "latex", bold = TRUE),
sprintf("%.3f", value))) %>%
ungroup() %>%
select(-c(group, id)) %>%
pivot_wider() %>%
select(-rowid)
kbl(df,
booktabs = TRUE,
escape = FALSE,
align = "r")
```