2017-10-20 171 views
2

我正在使用Rmarkdown生成頻率表的PDF。在運行freqquestionr運行後生成一個複雜的頻率表,並添加行分組與group_rows導致第一組最後一行的對齊問題。重複的例子,在這裏:使用group_rows與kableExtra進行列對齊

--- 
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) 
``` 

使我這個當針織:

Frequency Table

第一個「總」的文本是右對齊,但一切都很好。在kable行中添加align=('lrrr')行什麼都不做,align=('crrr')是一團糟。使用group_rows的索引方法會產生相同的結果。當忽略group_rows命令時,第一列中的所有內容都是左對齊的,看起來很好。我的直覺是,kableExtraquestionr的配合​​不好,因爲在運行questionr::freq時會創建「總計」行。

回答

1

這是當前CRAN版本kableExtra 0.5.2中的一個錯誤。它已經在dev版本中得到修復。我將在下週發佈CRAN。