2016-12-28 51 views
2

我執行簡單的任務對齊的列不居中。實際上,對於某些表格,它們與其他人完全一致 - 左對齊,這對我來說似乎相當隨意。與knitr kable功能

問題

我如何控制列與R功能kable從包knitr,即對齊,我究竟做錯了什麼?

編輯

運行:

library(knitr) 
kable(datatable,align=c(rep('c',times=7)), 
col.names = c("Copy","Sigma Est","Sigma Lower","Sigma Upper", 
"Lambda Est","Lambda Lower","Lambda Upper"),digits=3) 

產量:

| Copy | Sigma Est | Sigma Lower | Sigma Upper | Lambda Est | Lambda Lower | Lambda Upper | 
|:----:|:---------:|:-----------:|:-----------:|:----------:|:------------:|:------------:| 
| 0 | 14.631 | 12.275 | 16.987 | 0.129 | 8.778  | 9.296  | 
| 1 | 16.988 | 14.275 | 19.700 | 0.136 | 8.190  | 8.736  | 
| 2 | 20.850 | 17.517 | 24.183 | 0.129 | 8.595  | 9.113  | 
| 3 | 20.551 | 17.229 | 23.874 | 0.127 | 9.015  | 9.523  | 
| 4 | 22.651 | 18.993 | 26.310 | 0.127 | 8.969  | 9.478  | 
| 5 | 23.369 | 19.652 | 27.086 | 0.127 | 8.599  | 9.108  | 

這正是我想要的東西爲:---:表示中心柱,但是,當我按下Knit PDF和生成pdf文檔,所有列仍然左對齊。我該如何解決這個問題?

回答

4

你想喂kable對齊字符串向量等於列數。這是一個可重現的例子。

如幫助文件所提到的,

列的比對:由 'L'(左), 'C'(中心)和/或 'R'(右)的字符向量;默認情況下,數字列是右對齊的,其他列是左對齊的;如果align = NULL,則使用默認對齊方式。

因此,沒有任何對齊值,字符列是左對齊的,而數字列是右對齊的,如下所示。

library(knitr) 

kable(head(mtcars[1:5])) 


|     | mpg| cyl| disp| hp| drat| 
|:-----------------|----:|---:|----:|---:|----:| 
|Mazda RX4   | 21.0| 6| 160| 110| 3.90| 
|Mazda RX4 Wag  | 21.0| 6| 160| 110| 3.90| 
|Datsun 710  | 22.8| 4| 108| 93| 3.85| 
|Hornet 4 Drive | 21.4| 6| 258| 110| 3.08| 
|Hornet Sportabout | 18.7| 8| 360| 175| 3.15| 
|Valiant   | 18.1| 6| 225| 105| 2.76| 

要讓數字列居中對齊,同時保持字符列右對齊,我使用了以下內容。

kable(head(mtcars[1:5]), align=c(rep('c', 5))) 


|     | mpg | cyl | disp | hp | drat | 
|:-----------------|:----:|:---:|:----:|:---:|:----:| 
|Mazda RX4   | 21.0 | 6 | 160 | 110 | 3.90 | 
|Mazda RX4 Wag  | 21.0 | 6 | 160 | 110 | 3.90 | 
|Datsun 710  | 22.8 | 4 | 108 | 93 | 3.85 | 
|Hornet 4 Drive | 21.4 | 6 | 258 | 110 | 3.08 | 
|Hornet Sportabout | 18.7 | 8 | 360 | 175 | 3.15 | 
|Valiant   | 18.1 | 6 | 225 | 105 | 2.76 | 

以下測試,如果複製到一個.Rmd文件,輸出期望表格式化成一個pdf。

--- 
title: "Untitled" 
output: pdf_document 
--- 

this thing 

```{r table1, as.is=TRUE} 
library(knitr) 

kable(head(mtcars[1:5])) 

``` 


is not a centered table, while this thing 

```{r table2, as.is=TRUE} 

kable(head(mtcars[1:5]), align=rep('c', 5)) 

``` 

is a centered table. 
+0

謝謝你的回答,這是固定的問題之一,我編輯了原帖以反映第二個問題。 – Ivona

+0

我不得不添加'format =「markdown」'來解決後一個問題。 – Ivona