2014-04-04 17 views
5

Chciałbym wiedzieć, czy istnieje jakaś funkcja, która ułatwia wizualizację obiektu html w okienku przeglądarki RStudio. Na przykład chciałbym wiedzieć, czy możliwe byłoby wyświetlanie tabeli html w okienku przeglądarki.Czy można wyświetlić tabelę HTML w okienku przeglądarki?

library("Quandl") 
library("knitr") 
df <- Quandl("FBI_UCR/USCRIME_TYPE_VIOLENTCRIMERATE") 
kable(head(df[,1:9]), format = 'html', table.attr = "class=nofluid") 
+1

Myślę, że możesz przekonwertować swój obiekt na Grumpetable grob w pakiecie 'gridExtra' i wydrukować go (zobacz np. Http://stackoverflow.com/questions/15045396/r-suppressing-rownames-in-grid-table). –

+1

Dobra sztuczka, ale to nie jest tabela HTML. – PAC

Odpowiedz

6

Oto szybki sposób to zrobić w RStudio

view_kable <- function(x, ...){ 
    tab <- paste(capture.output(kable(x, ...)), collapse = '\n') 
    tf <- tempfile(fileext = ".html") 
    writeLines(tab, tf) 
    rstudio::viewer(tf) 
} 
view_kable(head(df[,1:9]), format = 'html', table.attr = "class=nofluid") 

Jeśli funkcja kable może zwrócić obiekt klasy kable, wówczas można zmienić nazwę view_kable jak print.kable w takim przypadku jedynie wywołanie kable funkcja otworzyłaby tabelę w przeglądarce. Jeśli uważasz, że jest to przydatne, możesz przesłać żądanie funkcji na stronie github knitr.

+1

Działa ładnie, chociaż wymaga zmiany rstudio :: viewer na rstudioapi :: viewer – Pafnucy

4

Niedawno dodaje tę funkcjonalność do mojego htmlTable() funkcji w Gmisc-package a funkcja jest dość prosta:

print.htmlTable<- function(x, useViewer = TRUE, ...){ 
    # Don't use viewer if in knitr 
    if (useViewer && 
     !"package:knitr" %in% search()){ 

    htmlFile <- tempfile(fileext=".html") 
    htmlPage <- paste("<html>", 
         "<head>", 
         "<meta http-equiv=\"Content-type\" content=\"text/html;charset=UTF-8\">", 
         "</head>", 
         "<body>", 
         "<div style=\"margin: 0 auto; display: table; margin-top: 1em;\">", 
         x, 
         "</div>", 
         "</body>", 
         "</html>", sep="\n") 
    cat(htmlPage, file=htmlFile) 

    viewer <- getOption("viewer") 
    if (!is.null(viewer) && 
      is.function(viewer)){ 
     # (code to write some content to the file) 
     viewer(htmlFile) 
    }else{ 
     utils::browseURL(htmlFile) 
    } 
    }else{ 
    cat(x) 
    } 
} 

RStudio recommends że używasz getOption („Viewer”) zamiast @ sugestią Ramnath za surowy RStudio :: viewer(). Moje rozwiązanie dodaje także utils :: browserURL() na wypadek, gdy nie używasz RStudio. Wpadłem na pomysł z postu na blogu this.

+0

Wygląda na to, że [htmlTable] (https://cran.r-project.org/web/packages/htmlTable/index.html) jest teraz jego własnym pakietem . –

1

Jak wyjaśniono na this RStudio Support page, kluczem jest użycie tempfile():

Zauważ, że szyba Viewer może być używany tylko dla lokalnej zawartości internetowej. Ta zawartość może być statycznymi plikami HTML zapisanymi w katalogu tymczasowym sesji (to znaczy plikami ze ścieżkami wygenerowanymi przez funkcję tempfile ) lub lokalnie uruchamianą aplikacją internetową.

Zobacz moją odpowiedź na this question dla przykładu bare-bone.

Powiązane problemy