kableextra 中的垂直对齐

Vertical alignment in kableextra

我在 Kableextra 中对齐结果时遇到一些问题。

---
title: "Report test 1"
author: "Adam"
date: "May 9, 2019"
output: pdf_document
---

COLLEGE: College of Education

DEPARTMENT: Office of Assessment and Accreditation

SEMESTER: Fall 2018

SECTION 1:  Please provide the mean and frequency distribution of the two required questions for all Traditional Delivery Courses. NOTE:  The MEAN and N is required. The Frequency is optional.  

x<-c(45,2,8,10,32,33)
y<-c(2,3,3,3,3,3)
EDLP_D.1<-cbind(x,y)

colnames(EDLP_D.1)<- c("Sheet", "Please indicate your level of satisfaction with the availability of the instructor outside the classroom. (In selecting your rating, consider the instructor's availability via established office hours, appointments, and opportunities for face-to-face interaction as well and as via telephones, e-mail, fax, and other means") 

#function to compute values needed for table 
vec_fun4 <- function(x,y){
  Vec <-c(colnames(x[,y]),round(mean(x[[y]]),2),length(which(!is.na(x[,y]==F))),length(which(x[,y]==1)),length(which(x[,y]==2)),length(which(x[,y]==3)),length(which(x[,y]==4)))
  return(Vec)   
}

#Switch from long format to wide format
item2.1 <- as.data.frame(t(as.matrix(vec_fun4(EDLP_D.1,1))))

#Make table
library(kableExtra)

kable(item2.1,"latex" ,booktabs=T, align = "lcccccc", col.names=linebreak(c(' ','Mean','\textit{N}' ,'Strongly\n Disagree','Disagree','Agree','Strongly\n Agree')),row.names = F,escape=F) %>% 
  column_spec(1, width = "20em" )

我想让数值在其单元格内水平和垂直居中。

我在此处附上了 table 的副本

我没有足够的积分来发表评论。我遇到了同样的问题,你有没有解决这个问题?

您可以试试这个功能让文字居中:

centerText <- function(text){
    paste0("\multirow{1}{*}[0pt]{", text, "}")
  }

但是,这可能会像我一样弄乱您的格式,例如列宽和文本换行。如果您找到更好的解决方案,请告诉我。

我的解决方案是替换一些 Latex 脚本

示例:

```{r results='asis'}
library(kableExtra)
library(dplyr)
library(stringr)
kable(
  data.frame(
    'x1' = 'Lorem ipsum dolor sit amet, consectetur adipisicing elit. Reprehenderit voluptates ut quam delectus perferendis tempora, voluptas fuga deleniti asperiores ipsam ipsum nam animi sequi, nisi dicta, minus pariatur atque, nemo.',
    'x2' = 11,
    'x3' = 22,
    'x4' = 33
  ),
  # align = 'lccr',
  # booktabs = T
  col.names = c(' ','X2','X3' ,'X4'),
  format = "latex"
) %>% 
  # column_spec(1, width = "20em") %>%
  # column_spec(2:4, width = "5em") %>%
  str_replace(
    '(?<=\\begin\{tabular\}).+',
    '{ >{\\raggedright\\arraybackslash}m{20em} >{\\centering\\arraybackslash}m{5em} >{\\centering\\arraybackslash}m{5em} >{\\raggedleft\\arraybackslash}m{5em} }'
  ) %>%
  cat
```

参考:https://es.overleaf.com/learn/latex/Tables