2013-07-19 10 views
9

Giả sử tôi có khung dữ liệu trong R. Tôi muốn viết nó vào một tập tin dưới dạng một bảng HTML đơn giản. Chỉ cần các bảng <>, < tr> và < td>.Làm thế nào tôi có thể biến khung dữ liệu R thành một bảng html đơn giản, không có cấu trúc?

Cho đến nay điều này có vẻ khó hơn. Ngay bây giờ tôi đang cố gắng để sử dụng R2THML như vậy:

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

Nhưng sau đó tôi nhận được một, file html theo kiểu xấu xí mà có thể trông giống như vậy:

<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> 

Có cách nào để có được đầu ra đó là đơn giản hơn (không chỉ định đường viền, tiêu đề, chú thích, v.v. Nếu không xuất bảng bên trong một bảng khác)? Hay điều này tốt như nó được?

+2

Tôi chưa bao giờ sử dụng nó cho ' HTML' nhưng tôi biết 'xtable' là một gói tốt (tôi sử dụng nó cho' latex') có tùy chọn 'HTML'. –

Trả lời

15

Gói xtable có thể tạo ra đầu ra HTML cũng như đầu ra LaTeX.

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

cho, trong file example.html:

<!-- 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> 

Điều này có thể được đơn giản hóa hơn nữa với các tùy chọn hơn để xtableprint.xtable:

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

cho

<!-- 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> 

(mà có thể được dẫn đến một tập tin với file lập luận để print.xtable như trong ví dụ trước.)

+0

Tôi nhìn vào '? Xtable' và không có tham số' type' cho tôi. Khi tôi chỉ định nó, nó bị bỏ qua, tôi luôn nhận được LaTeX. Nó chỉ hoạt động khi tôi 'x <- xtable (...)' và sau đó sử dụng 'print.xtable (x, type =" html ")'. –

+0

@Someone Đối số 'loại' * là * đối số cho lệnh' print', không phải cuộc gọi 'xtable'. Tôi vừa lồng vào cuộc gọi 'xtable' bên trong cuộc gọi' print' để thuận tiện. –

4

Câu trả lời thực sự khá đơn giản, nếu bạn sử dụng xtable. (Cảm ơn Señor O về mẹo này.)

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

Một đẹp hơn nhưng chậm hơn tùy chọn:

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

Vui lòng chỉnh sửa câu trả lời của bạn và thêm giải thích. Các câu trả lời chỉ có mã được khuyến khích và có thể bị xóa vì chúng không giải thích bất cứ điều gì. – WebDevBooster

+0

[Là một phần của hệ thống đánh giá] (https://stackoverflow.com/review/low-quality-posts/18708495), tôi đã chỉnh sửa câu trả lời của bạn để sửa định dạng. Bạn nên nghe WebDevBooster và giải thích mã của bạn. –