使用 group_rows 与 kableExtra 进行列对齐
Column alignment with kableExtra using group_rows
我正在使用 Rmarkdown 生成频率为 tables 的 PDF。从 questionr
运行 freq
之后生成复数频率 table 并使用 group_rows
添加行分组会导致第一组的最后一行出现对齐问题。此处可重现的示例:
---
output:
pdf_document:
latex_engine: xelatex
fig_caption: true
---
```{r}
library(haven)
library(questionr)
library(dplyr)
library(magrittr)
library(knitr)
library(kableExtra)
# Build some data
x <- rep(c(1,0),times=50)
y <- c(rep(1,times=25),rep(0,times=75))
z <- c(rep(1,times=75),rep(0,times=25))
# Function to run frequencies on several variables at a time
MassFreq <- function(...){
step1 <- list(...) # Wrap items into a list
step2 <- lapply(step1,freq,total=TRUE) # run frequencies on all items
step3 <- bind_rows(step2) # collapse list results into single df
Response <- unlist(lapply(step2,row.names),recursive=FALSE) # Get row names from frequencies
step4 <- cbind(Response,step3) #Stick row names at front of the dataframe
}
# Run function - returns a data frame object
test <- MassFreq(x,y,z)
# Build table
test %>%
kable(format="latex", booktabs = TRUE, row.names=FALSE) %>%
group_rows("Group 1",1,3) %>%
group_rows("Group 2",4,6) %>%
group_rows("Group 3",7,9)
```
编织时给我这个:
第一个 "Total" 文本是 right-aligned,但其他一切都很好。在 kable
行中添加 align=('lrrr')
没有任何作用,而 align=('crrr')
有点乱。使用 group_rows
的索引方法会产生相同的结果。当省略 group_rows
命令时,第一列中的所有内容都是 left-aligned 并且看起来很好。我的直觉是 kableExtra
不能很好地与 questionr
搭配使用,因为 "Total" 行是在 运行 questionr::freq
.
时创建的
这是当前 CRAN 版本的 kableExtra 0.5.2 中的错误。它已在开发版本中修复。下周我将发布 CRAN。
我正在使用 Rmarkdown 生成频率为 tables 的 PDF。从 questionr
运行 freq
之后生成复数频率 table 并使用 group_rows
添加行分组会导致第一组的最后一行出现对齐问题。此处可重现的示例:
---
output:
pdf_document:
latex_engine: xelatex
fig_caption: true
---
```{r}
library(haven)
library(questionr)
library(dplyr)
library(magrittr)
library(knitr)
library(kableExtra)
# Build some data
x <- rep(c(1,0),times=50)
y <- c(rep(1,times=25),rep(0,times=75))
z <- c(rep(1,times=75),rep(0,times=25))
# Function to run frequencies on several variables at a time
MassFreq <- function(...){
step1 <- list(...) # Wrap items into a list
step2 <- lapply(step1,freq,total=TRUE) # run frequencies on all items
step3 <- bind_rows(step2) # collapse list results into single df
Response <- unlist(lapply(step2,row.names),recursive=FALSE) # Get row names from frequencies
step4 <- cbind(Response,step3) #Stick row names at front of the dataframe
}
# Run function - returns a data frame object
test <- MassFreq(x,y,z)
# Build table
test %>%
kable(format="latex", booktabs = TRUE, row.names=FALSE) %>%
group_rows("Group 1",1,3) %>%
group_rows("Group 2",4,6) %>%
group_rows("Group 3",7,9)
```
编织时给我这个:
第一个 "Total" 文本是 right-aligned,但其他一切都很好。在 kable
行中添加 align=('lrrr')
没有任何作用,而 align=('crrr')
有点乱。使用 group_rows
的索引方法会产生相同的结果。当省略 group_rows
命令时,第一列中的所有内容都是 left-aligned 并且看起来很好。我的直觉是 kableExtra
不能很好地与 questionr
搭配使用,因为 "Total" 行是在 运行 questionr::freq
.
这是当前 CRAN 版本的 kableExtra 0.5.2 中的错误。它已在开发版本中修复。下周我将发布 CRAN。