2013-07-19 4 views
9

Nehmen wir an, ich habe einen Datenrahmen in R. Ich möchte es in eine Datei als einfache HTML-Tabelle schreiben. Nur die < Tabelle>, < tr> und < td> Tags.Wie kann ich einen R-Datenrahmen in eine einfache, unstrukturierte HTML-Tabelle umwandeln?

Bis jetzt scheint das härter als es sein sollte. Im Moment bin ich versucht, R2THML zu verwenden wie so:

HTML(dataframe, file=outpath, append=FALSE) 

Aber dann bekomme ich eine hässliche, html-Stil-Datei, die wie so aussehen könnte:

<table cellspacing=0 border=1> 
<caption align=bottom class=captiondataframe></caption> 
<tr><td> 
    <table border=0 class=dataframe> 
    <tbody> 
    <tr class= firstline > 
     <th>&nbsp; </th> 
     <th>name </th> 
     <th>donations </th> 
     <th>clicks </th> 
      ... 
    </tr> 
<tr> 
<td class=firstcolumn>1 
</td> 
<td class=cellinside>Black.text 
</td> 
... 
</tbody> 
</table> 
</td></table> 
<br> 

Gibt es eine Möglichkeit Ausgabe zu erhalten das ist einfacher (ohne Angabe von Rahmen, Überschriften, Beschriftungen usw. Ohne Ausgabe einer Tabelle innerhalb eine andere Tabelle)? Oder ist das so gut wie es geht?

+2

ich es nie für 'verwendet habe HTML' aber ich weiß 'xtable' ist ein gutes Paket (ich benutze es für' latex'), das eine 'HTML' Option hat. –

Antwort

15

Das xtable Paket kann HTML-Ausgabe sowie LaTeX Ausgabe erzeugen.

# install.packages("xtable") 
library("xtable") 
sample_table <- mtcars[1:3,1:3] 
print(xtable(sample_table), type="html", file="example.html") 

gibt, in der Datei example.html:

print(xtable(sample_table, align="llll"), 
     type="html", html.table.attributes="") 

gibt

<!-- html table generated in R 3.0.1 by xtable 1.7-1 package --> 
<!-- Fri Jul 19 09:13:33 2013 --> 
<TABLE > 
<TR> <TH> </TH> <TH> mpg </TH> <TH> cyl </TH> <TH> disp </TH> </TR> 
    <TR> <TD> Mazda RX4 </TD> <TD> 21.00 </TD> <TD> 6.00 </TD> <TD> 160.00 </TD> </TR> 
    <TR> <TD> Mazda RX4 Wag </TD> <TD> 21.00 </TD> <TD> 6.00 </TD> <TD> 160.00 </TD> </TR> 
    <TR> <TD> Datsun 710 </TD> <TD> 22.80 </TD> <TD> 4.00 </TD> <TD> 108.00 </TD> </TR> 
    </TABLE> 
:

<!-- html table generated in R 3.0.1 by xtable 1.7-1 package --> 
<!-- Fri Jul 19 09:08:15 2013 --> 
<TABLE border=1> 
<TR> <TH> </TH> <TH> mpg </TH> <TH> cyl </TH> <TH> disp </TH> </TR> 
    <TR> <TD align="right"> Mazda RX4 </TD> <TD align="right"> 21.00 </TD> <TD align="right"> 6.00 </TD> <TD align="right"> 160.00 </TD> </TR> 
    <TR> <TD align="right"> Mazda RX4 Wag </TD> <TD align="right"> 21.00 </TD> <TD align="right"> 6.00 </TD> <TD align="right"> 160.00 </TD> </TR> 
    <TR> <TD align="right"> Datsun 710 </TD> <TD align="right"> 22.80 </TD> <TD align="right"> 4.00 </TD> <TD align="right"> 108.00 </TD> </TR> 
    </TABLE> 

Dies könnte mit mehr Optionen zu xtable und print.xtable vereinfacht werden

(die in eine Datei mit dem file Argumente print.xtable wie im vorherigen Beispiel gerichtet werden könnten.)

+0

Ich sehe '? Xtable' und es gibt keinen' type' Parameter für mich. Wenn ich es spezifiziere, wird es ignoriert, ich bekomme immer LaTeX. Es funktioniert nur, wenn ich 'x <- xtable (...)' und dann 'print.xtable (x, type =" html ")' '. –

+0

@Someone Das 'type' Argument * ist * ein Argument für den' print' Aufruf, nicht den 'xtable' Aufruf. Ich habe gerade den 'xtable'-Aufruf innerhalb des 'print'-Aufrufs zur Vereinfachung verschachtelt. –

4

Die Antwort ist eigentlich ganz einfach, wenn Sie xtable verwenden. (Dank Señor O für die Spitze.)

install.packages("xtable") 
library(xtable) 
out_table_x <- xtable(out_table) 
print(out_table_x, type='html', file="./example.html") 
2

Eine schönere, aber langsame Option:

library(htmlTable) 
htmlTable(iris) 
0
to_html_table<-function(dataframe){ 
tags$table(
    tags$thead(tags$tr(lapply(colnames(dataframe), function(x) tags$th(x)))), 
    tags$tbody(
    apply(dataframe,1, function(x) { tags$tr(lapply(x, function(y) tags$td(y)))}) 
)) 
} 
+1

Bitte bearbeiten Sie Ihre Antwort und fügen Sie eine Erklärung hinzu. Code-only-Antworten werden abgeraten und können gelöscht werden, da sie nichts erklären. – WebDevBooster

+0

[Als Teil des Überprüfungssystems] (https://Stackoverflow.com/review/low-quality-posts/18708495) habe ich Ihre Antwort bearbeitet, um die Formatierung zu korrigieren. Sie sollten WebDevBooster hören und Ihren Code erklären. –

Verwandte Themen