Просмотреть снимок сгенерированный снимок в RStudio viewer

Я хотел бы увидеть файл html, который создается с помощью markdown в RStudio viewer, но rstudio::viewer('test.html') открывает мой файл в браузере вне RStudio. Не могли бы вы рассказать мне, как я могу это достичь?

Этот пример работает, но я не знаю, почему мой пример не работает таким образом.

test.html file it'a является выполненным примером, который мы получаем при выборе нового файла → R Markdown.

РЕДАКТИРОВАТЬ (согласно комментарию Романа Луштрика)

library(knitr)
library(markdown)
f <- system.file("examples", "knitr-minimal.Rmd", package = "knitr")
knit(f)
markdownToHTML('knitr-minimal.md',output='knitr-minimal.html')
rstudio::viewer('knitr-minimal.html')

Ответ 1

Ключ использует tempfile(), как описано здесь. Когда html файл находится вне временного каталога сеанса, Rstudio не будет отображать его.

Это, с другой стороны, будет работать:

temp.f <- tempfile()
cat("Hello", file = temp.f)
rstudio::viewer(temp.f)

редактировать

Как отметил @Sebastian Palma в своем комментарии, пакет "rstudio" был заменен на "rstudioapi", так что третья строка теперь должна выглядеть так:

rstudioapi::viewer(temp.f)

Ответ 2

В моей версии RStudio (0.98.994) нажатие на маленькую стрелку вниз в правой части кнопки "knit HTML" дает мне варианты "Просмотр в панели" и "Просмотр в окне". Выбор первого вместо второго исправил его для меня.

Ответ 3

Хорошее комплексное решение можно найти, изменив ответ, приведенный здесь: Можно ли просмотреть таблицу HTML на панели просмотра? Или, для удобства, я скопировал полный код в конце

В частности, измените определение print.htmlTable с помощью следующих трех простых шагов:

(1) Добавьте флаг к объявлению функции следующим образом:

print.htmlTable<- function(x, useViewer = TRUE, as.file.path = FALSE, ...)

(2) В определении функции добавьте следующую строку:

if(as.file.path){ x <- read_file(x)}

(3) Создайте функцию-обертку для просмотра файла:

view.htmlFile <- function(x, ...){
     print.htmlTable(x, useViewer = TRUE, as.file.path = TRUE, ...) 
     }

(4) Теперь вы можете использовать оболочку для просмотра HTML файлов, используя путь к файлу
(и оригинальная функция для просмотра несохраненных выходных данных HTML):

 view.htmlFile(filepath.to.html) #i.e. 'knitr-minimal.html' or any other html file

Напоминание: это настройка/изменение оригинальной функции, написанной Максом Гордоном в более раннем сообщении. Кредит дан соответственно.

print.htmlTable<- function(x, useViewer = TRUE, as.file.path = FALSE, ...){

  if(as.file.path){ x <- read_file(x)}

  # Don't use viewer if knitr package is loaded (assumes if you loaded knitr, you are using knitr and dont want to use Viewer)
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)
      }
    }

#Wrapper to allow viewing of files using path
view.htmlFile <- function(x, ...){
    print.htmlTable(x, useViewer = TRUE, as.file.path = TRUE, ...) 
}

view.htmlFile(filepath.to.html)