R语言输出latex或html

有一些时候,我们想把R对象输出为LaTeX格式或者HTML格式,怎么办呢?

简介knitr常用参数

xtable包

输出为纯HTML格式或者LaTeX格式

tt <- head(iris) # 普通的输出

library(xtable)
print(xtable(tt),type="html") # 输出为纯HTML格式
## <!-- html table generated in R 4.0.2 by xtable 1.8-4 package -->
## <!-- Mon Sep 14 21:28:39 2020 -->
## <table border=1>
## <tr> <th>  </th> <th> Sepal.Length </th> <th> Sepal.Width </th> <th> Petal.Length </th> <th> Petal.Width </th> <th> Species </th>  </tr>
##   <tr> <td align="right"> 1 </td> <td align="right"> 5.10 </td> <td align="right"> 3.50 </td> <td align="right"> 1.40 </td> <td align="right"> 0.20 </td> <td> setosa </td> </tr>
##   <tr> <td align="right"> 2 </td> <td align="right"> 4.90 </td> <td align="right"> 3.00 </td> <td align="right"> 1.40 </td> <td align="right"> 0.20 </td> <td> setosa </td> </tr>
##   <tr> <td align="right"> 3 </td> <td align="right"> 4.70 </td> <td align="right"> 3.20 </td> <td align="right"> 1.30 </td> <td align="right"> 0.20 </td> <td> setosa </td> </tr>
##   <tr> <td align="right"> 4 </td> <td align="right"> 4.60 </td> <td align="right"> 3.10 </td> <td align="right"> 1.50 </td> <td align="right"> 0.20 </td> <td> setosa </td> </tr>
##   <tr> <td align="right"> 5 </td> <td align="right"> 5.00 </td> <td align="right"> 3.60 </td> <td align="right"> 1.40 </td> <td align="right"> 0.20 </td> <td> setosa </td> </tr>
##   <tr> <td align="right"> 6 </td> <td align="right"> 5.40 </td> <td align="right"> 3.90 </td> <td align="right"> 1.70 </td> <td align="right"> 0.40 </td> <td> setosa </td> </tr>
##    </table>
print(xtable(tt),type="latex") # 输出为纯LaTeX格式
## % latex table generated in R 4.0.2 by xtable 1.8-4 package
## % Mon Sep 14 21:28:39 2020
## \begin{table}[ht]
## \centering
## \begin{tabular}{rrrrrl}
##   \hline
##  & Sepal.Length & Sepal.Width & Petal.Length & Petal.Width & Species \\ 
##   \hline
## 1 & 5.10 & 3.50 & 1.40 & 0.20 & setosa \\ 
##   2 & 4.90 & 3.00 & 1.40 & 0.20 & setosa \\ 
##   3 & 4.70 & 3.20 & 1.30 & 0.20 & setosa \\ 
##   4 & 4.60 & 3.10 & 1.50 & 0.20 & setosa \\ 
##   5 & 5.00 & 3.60 & 1.40 & 0.20 & setosa \\ 
##   6 & 5.40 & 3.90 & 1.70 & 0.40 & setosa \\ 
##    \hline
## \end{tabular}
## \end{table}

若想在rmarkdown中输出时能正常显示上面的格式怎么办了?

只需添加参数即可

library(xtable)
print(xtable(tt),type="html") # 输出latex 失效
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 5.10 3.50 1.40 0.20 setosa
2 4.90 3.00 1.40 0.20 setosa
3 4.70 3.20 1.30 0.20 setosa
4 4.60 3.10 1.50 0.20 setosa
5 5.00 3.60 1.40 0.20 setosa
6 5.40 3.90 1.70 0.40 setosa

kableExtra包

这个包在原有的输出上,做出了很大的改进,使得原有输出很丑的表格,瞬间变得高大上。而且不需要设置knit参数。很方便,推荐使用

library(knitr)
library(kableExtra)
dt <- mtcars[1:5, 1:6]

基于HTML的table

kable(dt)
mpg cyl disp hp drat wt
Mazda RX4 21.0 6 160 110 3.90 2.620
Mazda RX4 Wag 21.0 6 160 110 3.90 2.875
Datsun 710 22.8 4 108 93 3.85 2.320
Hornet 4 Drive 21.4 6 258 110 3.08 3.215
Hornet Sportabout 18.7 8 360 175 3.15 3.440

设置主题

dt %>%
  kable() %>%
  kable_styling()
mpg cyl disp hp drat wt
Mazda RX4 21.0 6 160 110 3.90 2.620
Mazda RX4 Wag 21.0 6 160 110 3.90 2.875
Datsun 710 22.8 4 108 93 3.85 2.320
Hornet 4 Drive 21.4 6 258 110 3.08 3.215
Hornet Sportabout 18.7 8 360 175 3.15 3.440

表格样式

表格样式1

kable(dt) %>%
  kable_styling(bootstrap_options = c("striped", "hover"))
mpg cyl disp hp drat wt
Mazda RX4 21.0 6 160 110 3.90 2.620
Mazda RX4 Wag 21.0 6 160 110 3.90 2.875
Datsun 710 22.8 4 108 93 3.85 2.320
Hornet 4 Drive 21.4 6 258 110 3.08 3.215
Hornet Sportabout 18.7 8 360 175 3.15 3.440

表格样式2

kable(dt) %>%
  kable_styling(bootstrap_options = "striped", full_width = F)
mpg cyl disp hp drat wt
Mazda RX4 21.0 6 160 110 3.90 2.620
Mazda RX4 Wag 21.0 6 160 110 3.90 2.875
Datsun 710 22.8 4 108 93 3.85 2.320
Hornet 4 Drive 21.4 6 258 110 3.08 3.215
Hornet Sportabout 18.7 8 360 175 3.15 3.440
sessionInfo()
## R version 4.0.2 (2020-06-22)
## Platform: x86_64-apple-darwin17.0 (64-bit)
## Running under: macOS Mojave 10.14.5
## 
## Matrix products: default
## BLAS:   /Library/Frameworks/R.framework/Versions/4.0/Resources/lib/libRblas.dylib
## LAPACK: /Library/Frameworks/R.framework/Versions/4.0/Resources/lib/libRlapack.dylib
## 
## locale:
## [1] zh_CN.UTF-8/zh_CN.UTF-8/zh_CN.UTF-8/C/zh_CN.UTF-8/zh_CN.UTF-8
## 
## attached base packages:
## [1] stats     graphics  grDevices utils     datasets  methods   base     
## 
## other attached packages:
## [1] kableExtra_1.2.1 knitr_1.29       xtable_1.8-4    
## 
## loaded via a namespace (and not attached):
##  [1] rstudioapi_0.11   xml2_1.3.2        magrittr_1.5      rvest_0.3.6      
##  [5] munsell_0.5.0     colorspace_1.4-1  viridisLite_0.3.0 R6_2.4.1         
##  [9] rlang_0.4.7       highr_0.8         stringr_1.4.0     httr_1.4.2       
## [13] tools_4.0.2       webshot_0.5.2     xfun_0.17         htmltools_0.5.0  
## [17] yaml_2.2.1        digest_0.6.25     lifecycle_0.2.0   bookdown_0.20    
## [21] glue_1.4.1        evaluate_0.14     rmarkdown_2.3     blogdown_0.20    
## [25] stringi_1.4.6     compiler_4.0.2    scales_1.1.1

参考:

更多的尝试可以去https://haozhu233.github.io/kableExtra/

该网站上有对表格输出所有你想要的样式,比如HTML、LaTeX。


次;