有一些时候,我们想把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