2013-04-06 37 views
4
library(xtable) 
library(rattle) 
set.seed(42) 
obs <- sample(1:nrow(weatherAUS), 5) 
vars <- 2:7 
xtable(weatherAUS[obs, vars]) 

我得到了下面的代碼輸出,爲什麼我不能得到格式化的表?如何使用ascii,html或markdown格式在R中打印表格?

% latex table generated in R 2.15.1 by xtable 1.7-1 package 
% Sat Apr 6 17:02:37 2013 
\begin{table}[ht] 
\centering 
\begin{tabular}{rlrrrrr} 
    \hline 
& Location & MinTemp & MaxTemp & Rainfall & Evaporation & Sunshine \\ 
    \hline 
60992 & Hobart & 5.60 & 13.00 & 7.60 & 1.60 & 3.10 \\ 
    62476 & Launceston & 7.40 & 13.50 & 8.80 & & \\ 
    19077 & Williamtown & 18.30 & 29.10 & 3.20 & 1.00 & 7.00 \\ 
    55366 & PerthAirport & 9.80 & 21.90 & 0.00 & 3.60 & 9.80 \\ 
    42784 & GoldCoast & 23.40 & 30.40 & 0.00 & & \\ 
    \hline 
\end{tabular} 
\end{table} 
+2

表當你在LaTeX的環境是出現時,它不格式化的輸出。你想要什麼?一張帶有表格的文件?將一個漂亮的表格導出到Word/LibreOffice? – 2013-04-06 09:14:14

+0

我在這裏演示了6種方法:http://rpubs.com/benmarwick/tables-rmarkdown – Ben 2015-03-12 22:26:07

回答

16

你會被從xtable返回什麼是漂亮的格式,但因爲它是在LaTeX的語法是,這將是值得通過乳膠類的編譯pdflatex運行。這將返回一個PDF文檔是這樣的:

compiled pdf file

如果你想R控制檯內的格式化的表格,所以標準print.data.frame的,而人類可讀的版本,你可能會給一個嘗試將ascii或我的pander包。例子:

  1. 基本ascii電話:

    > library(ascii) 
    > ascii(weatherAUS[obs, vars]) 
    |=================================================================================== 
    1.1+| h| Location  h| MinTemp h| MaxTemp h| Rainfall h| Evaporation h| Sunshine 
    | 60992 | Hobart  | 5.60 | 13.00 | 7.60  | 1.60  | 3.10  
    | 62476 | Launceston | 7.40 | 13.50 | 8.80  |    |   
    | 19077 | Williamtown | 18.30 | 29.10 | 3.20  | 1.00  | 7.00  
    | 55366 | PerthAirport | 9.80 | 21.90 | 0.00  | 3.60  | 9.80  
    | 42784 | GoldCoast | 23.40 | 30.40 | 0.00  |    |   
    |=================================================================================== 
    
  2. 調用ascii返回表中如新結構化格式:

    > print(ascii(weatherAUS[obs, vars]), type = "rest") 
    
    +-------+--------------+---------+---------+----------+-------------+----------+ 
    |  | Location  | MinTemp | MaxTemp | Rainfall | Evaporation | Sunshine | 
    +=======+==============+=========+=========+==========+=============+==========+ 
    | 60992 | Hobart  | 5.60 | 13.00 | 7.60  | 1.60  | 3.10  | 
    +-------+--------------+---------+---------+----------+-------------+----------+ 
    | 62476 | Launceston | 7.40 | 13.50 | 8.80  |    |   | 
    +-------+--------------+---------+---------+----------+-------------+----------+ 
    | 19077 | Williamtown | 18.30 | 29.10 | 3.20  | 1.00  | 7.00  | 
    +-------+--------------+---------+---------+----------+-------------+----------+ 
    | 55366 | PerthAirport | 9.80 | 21.90 | 0.00  | 3.60  | 9.80  | 
    +-------+--------------+---------+---------+----------+-------------+----------+ 
    | 42784 | GoldCoast | 23.40 | 30.40 | 0.00  |    |   | 
    +-------+--------------+---------+---------+----------+-------------+----------+ 
    
  3. 使用pander返回不同的降價格式的表格中:

    > library(pander) 
    > panderOptions('table.split.table', Inf) 
    > pander(weatherAUS[obs, vars]) 
    
    -------------------------------------------------------------------------------- 
        &nbsp;  Location MinTemp MaxTemp Rainfall Evaporation Sunshine 
    ----------- ------------ --------- --------- ---------- ------------- ---------- 
    **60992**  Hobart  5.6  13.0  7.6   1.6   3.1  
    
    **62476** Launceston  7.4  13.5  8.8        
    
    **19077** Williamtown 18.3  29.1  3.2   1.0   7.0  
    
    **55366** PerthAirport 9.8  21.9  0.0   3.6   9.8  
    
    **42784** GoldCoast  23.4  30.4  0.0        
    -------------------------------------------------------------------------------- 
    
  4. 或在grid格式:

    > pandoc.table(weatherAUS[obs, vars], style = 'grid') 
    
    +-------------+--------------+-----------+-----------+------------+---------------+------------+ 
    | &nbsp; | Location | MinTemp | MaxTemp | Rainfall | Evaporation | Sunshine | 
    +=============+==============+===========+===========+============+===============+============+ 
    | **60992** | Hobart | 5.6 | 13.0 | 7.6  |  1.6  | 3.1  | 
    +-------------+--------------+-----------+-----------+------------+---------------+------------+ 
    | **62476** | Launceston | 7.4 | 13.5 | 8.8  |    |   | 
    +-------------+--------------+-----------+-----------+------------+---------------+------------+ 
    | **19077** | Williamtown | 18.3 | 29.1 | 3.2  |  1.0  | 7.0  | 
    +-------------+--------------+-----------+-----------+------------+---------------+------------+ 
    | **55366** | PerthAirport | 9.8 | 21.9 | 0.0  |  3.6  | 9.8  | 
    +-------------+--------------+-----------+-----------+------------+---------------+------------+ 
    | **42784** | GoldCoast | 23.4 | 30.4 | 0.0  |    |   | 
    +-------------+--------------+-----------+-----------+------------+---------------+------------+ 
    
  5. simple R□格式:

    > pandoc.table(weatherAUS[obs, vars], style = 'simple') 
    
        &nbsp;  Location MinTemp MaxTemp Rainfall Evaporation Sunshine 
    ----------- ------------ --------- --------- ---------- ------------- ---------- 
    **60992**  Hobart  5.6  13.0  7.6   1.6   3.1  
    **62476** Launceston  7.4  13.5  8.8        
    **19077** Williamtown 18.3  29.1  3.2   1.0   7.0  
    **55366** PerthAirport 9.8  21.9  0.0   3.6   9.8  
    **42784** GoldCoast  23.4  30.4  0.0        
    
  6. 或者在PHPMarkdown額外/管道語法與knitr使用:

    > pandoc.table(weatherAUS[obs, vars], style = 'rmarkdown') 
    
    | &nbsp; | Location | MinTemp | MaxTemp | Rainfall | Evaporation | Sunshine | 
    |:-----------:|:------------:|:---------:|:---------:|:----------:|:-------------:|:----------:| 
    | **60992** | Hobart | 5.6 | 13.0 | 7.6  |  1.6  | 3.1  | 
    | **62476** | Launceston | 7.4 | 13.5 | 8.8  |    |   | 
    | **19077** | Williamtown | 18.3 | 29.1 | 3.2  |  1.0  | 7.0  | 
    | **55366** | PerthAirport | 9.8 | 21.9 | 0.0  |  3.6  | 9.8  | 
    | **42784** | GoldCoast | 23.4 | 30.4 | 0.0  |    |   | 
    
+0

非常有幫助的教程,但'pandoc.table'(在pander 0.3.1中)不會將'rmarkdown'作爲一種風格;它給出了'match.arg(style)中的錯誤:'arg'應該是'multiline','grid','simple'之一' – 2013-04-08 18:57:54

+0

沒錯,謝謝@David,我應該強調'rmarkdown'語法最近才推出,所以它不在CRAN上(但它會在一個星期左右到達那裏)。在此之前,您可以從GitHub安裝最新版本的'pander':http://rapporter.github.io/pander/#installation – daroczig 2013-04-08 19:14:45

+1

rmarkdown非常好用,並且RStudio中最近的演示(.Rpres)功能給出了很好的默認顯示 – 2013-04-19 07:43:52