2013-11-25 3 views
2

Я хотел бы, чтобы улучшить внешний вид с html таблицы, я генерировать в R с использованием пакета xtable:Форматирование HTML таблицы в R

library(xtable) 

html.table = xtable(<mydataframe>) 
digits(html.table) = 2 

распечатать таблицу, используя:

html.tab = print(html.table, type = "html", floating = FALSE) 
cat(html.tab, file = <html link>) 

I хотел бы иметь возможность обосновать текст в таблице, изменить цвет столбца заголовка, изменить шрифт, ...

Есть ли способ, которым я могу достичь этого в R?

Спасибо!

+4

Что такое downvoting сообщение без включения комментария, объясняющего почему? – Mayou

+0

Этот ответ [здесь] (http://stackoverflow.com/questions/15403903/create-tables-with-conditional-formatting-with-rmarkdown-knitr/15405068#15405068) должен вам помочь. – agstudy

+0

@agstudy Большое спасибо. Я очень новичок в HTML, но это должно помочь мне понять. Благодарю. – Mayou

ответ

2

Идея заключается в следующем:

  1. Создание CSS, где вы форматировать «стилизовать» в вашей таблице, используя некоторые CSS Особенности
  2. Создание HTML таблицы с помощью print.xtable
  3. Создайте файл, включая ссылку на CSS-файл и созданный HTML таблица

Так вот код создания файла "res.html":

## a dummy data.frame used as an example 
library(xtable) 
n <- data.frame(x = c(1,1,1,1,1), y = c(0,1,0,1,0)) 
## the html header 
## here I am using a link to mystyle.css 
html.head <- paste("<head>" , 
      '<link rel="stylesheet" type="text/css" href="mystyle.css"/>', 
      "</head>",sep='\n') 
## the html body 
html.table <- paste(print(xtable(n),type='html','res.html'), 
        collapse = "\n") 
html.body <- paste("<body>", html.table,"</body>") 
## the html file 
write(paste(html.head,html.body,sep='\n'),"res.html") 

файл начертанием лист (mystyle.css) может содержать что-то вроде этого:

table { 
    max-width: 95%; 
    border: 1px solid #ccc; 
} 

th { 
    background-color: #000000; // background for table header 
    color: #ffffff; 
} 

td 
{ 
    text-align:right;  // justify column 
    background-color: #FF0000; 
} 
+0

Большое вам спасибо за подробное объяснение. Однако по какой-то причине это не сработало для меня.Должен ли я сохранять таблицу стилей в определенном каталоге, или я могу сохранить ее в любом месте и ссылаться на нее, используя свой полный путь? – Mayou

+0

Кроме того, если я пишу другие вещи вместе с таблицей, я предполагаю, что весь код должен быть включен в 'html.body'? – Mayou

+0

@Mariam here href = "mystyle.css" означает, что файл стиля находится в том же месте, что и html-файл. Это относительный путь (относительно местоположения html). Например, href = "css/mystyle.css" означает, что стиль хранится в каталоге css. – agstudy

9

с xtable вы также можете дать класс или идентификатор (или встроенный CSS) в <TABLE> тег с html.table.attributes аргумент. пример:

print(xtable(head(iris, 10)), type = "html", include.rownames = F, 
     html.table.attributes="class='table-bordered'") 

это возвращает:

<!-- html table generated in R 3.0.1 by xtable 1.7-3 package --> 
<!-- Fri Jul 11 12:18:15 2014 --> 
<TABLE class='table table-bordered'> 
<TR> <TH> Sepal.Length </TH> <TH> Sepal.Width </TH> <TH> Petal.Length </TH> <TH> Petal.Width </TH> <TH> Species </TH> </TR> 
<TR> <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"> 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"> 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.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.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"> 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> 
<TR> <TD align="right"> 4.60 </TD> <TD align="right"> 3.40 </TD> <TD align="right"> 1.40 </TD> <TD align="right"> 0.30 </TD> <TD> setosa </TD> </TR> 
<TR> <TD align="right"> 5.00 </TD> <TD align="right"> 3.40 </TD> <TD align="right"> 1.50 </TD> <TD align="right"> 0.20 </TD> <TD> setosa </TD> </TR> 
<TR> <TD align="right"> 4.40 </TD> <TD align="right"> 2.90 </TD> <TD align="right"> 1.40 </TD> <TD align="right"> 0.20 </TD> <TD> setosa </TD> </TR> 
<TR> <TD align="right"> 4.90 </TD> <TD align="right"> 3.10 </TD> <TD align="right"> 1.50 </TD> <TD align="right"> 0.10 </TD> <TD> setosa </TD> </TR> 
</TABLE> 

этот класс или идентификатор может быть использован в СЦ файл, это может быть полезно, если создать несколько таблиц для HTML страницы


Кроме того, вы можете использовать аргумент print.results=FALSE, чтобы поймать вектор символов и использовать функции из строкиr пакет, например. str_replace(), str_replace_all(), чтобы добавить классы, id или встроенные css в другие места в таблице, например. <TD> tag

Смежные вопросы