2016-10-21 38 views
0

我有,我想在Rmarkdownxtable右對齊,並設置寬度Rmarkdown

--- 
title: "Test" 
output: 
    pdf_document 
--- 

```{r testing, results='asis'} 
library(xtable) 
df <- structure(list(ID = c(101L, 102L, 103L, 104L, 105L, 106L), 
         Gr1 = c(10.76,983.4, 34.000, 20, 23.8457, 13.32), 
         Gr2 = c(NA,NA, NA, 20L, NA, NA) 
         ), 
        .Names = c("ID", "Grade1", "Grade2"), 
        class = c("tbl_df", "data.frame"), 
        row.names = c(NA, -6L)) 
xtable(df, 
     align = c('l', 'p{1.5in}', rep('r{0.5in}',2)), 
     digits=c(0,0,1,0)) 
``` 

與右對齊變成一個桌子給我的rep('r{0.5in}',2)

! LaTeX Error: Illegal character in array arg. 

我的錯誤的數據幀「以前也試過:align = c('l|', 'p{1.5in}|', rep('R{0.5in}|',2))

下正常工作:align = c('l', 'p{1.5in}', rep('p{0.5in}',2))

The data isn't right aligned

但數據左對齊

+0

我不明白你的觀點:如果你想做最後兩列,那麼'rep('r',2)'。只有參數'p'有一個寬度參數。 –

+0

但是不會擺脫最後兩列的寬度參數嗎?我需要寬度和右對齊 – pluke

+1

'r,l,c'默認情況下不帶寬度參數。您將需要創建一個自定義列類型,例如'R,L,C'來獲得所需的結果,您可以找到 [Here](http://stackoverflow.com/questions/33208777/how-to-set-both -column寬度和文本配向在對準參數的-的-xtable) – 9Heads

回答

0

解決了,我必須創建兩個包含文件來注入必要的乳膠。首先更新的降價文件YAML:

--- 
title: "Test something" 
output: 
    pdf_document: 
    includes: 
     in_header: preamble-latex.tex 
     before_body: prebody-latex.tex 
--- 
<SNIP, SEE ABOVE> 

然後創建preamble-latex.tex加載陣列封裝

\usepackage{array} 

,創造prebody-latex.tex存儲新列命令

\newcolumntype{R}[1]{>{\raggedleft\let\newline\\\arraybackslash\hspace{0pt}}p{#1}} 
1

這是你的表的近似值。我不知道我的寬度恰到好處。顯然pixiedust有一些可怕的事情發生,因爲當我將width_units"cm"更改爲"in"時,我得到的表太寬了。

--- 
title: "Test" 
output: 
    pdf_document 
header-includes: 
- \usepackage{amssymb} 
- \usepackage{arydshln} 
- \usepackage{caption} 
- \usepackage{graphicx} 
- \usepackage{hhline} 
- \usepackage{longtable} 
- \usepackage{multirow} 
- \usepackage[dvipsnames,table]{xcolor} 
--- 

```{r testing, results='asis'} 
library(pixiedust) 
df <- structure(list(ID = c(101L, 102L, 103L, 104L, 105L, 106L), 
         Gr1 = c(10.76,983.4, 34.000, 20, 23.8457, 13.32), 
         Gr2 = c(NA,NA, NA, 20L, NA, NA) 
         ), 
        .Names = c("ID", "Grade1", "Grade2"), 
        class = c("tbl_df", "data.frame"), 
        row.names = c(NA, -6L)) 
dust(df, keep_rownames = TRUE, 
    float = FALSE) %>% 
    sprinkle_colnames(.rownames = "") %>% 
    medley_bw() %>% 
    sprinkle_table(cols = ".rownames", 
       border = "right") %>% 
    sprinkle_table(cols = c("Grade1", "Grade2"), 
       halign = "right") %>% 
    sprinkle(cols = c("ID", "Grade1", "Grade2"), 
      width = c(1.5, 0.05, 0.05), 
      width_units = "cm", 
      na_string = "", 
      recycle = "cols") %>% 
    sprinkle(cols = "Grade1", 
      fn = quote(sprintf("%.1f", value))) 

```