Ошибка рисования графика для вязания в html с помощью функции в RMarkdown

#html #r #plotly #r-markdown

#HTML #r #plotly #r-markdown

Вопрос:

У меня есть функция в документе R Markdown. Функция принимает переменную «номер обращения», которая используется для фильтрации некоторых фреймов данных, создания графика и вывода графика в документ knit html. Вот основная идея:

 #Outside of function, I have my unfiltered dataset:
as.data.frame(my.dataset)

build_plots <- function(unique_case_id) {

    my.dataset.filtered <- my.dataset %>%
        filter(case_id==unique_case_id)

    #draw plot
    data <- as.data.frame(my.dataset.filtered)
    p <- vistime(data)
    pb <- plotly_build(p)

    pb #display plot 

    # Output plot to html doc
    rmarkdown::render(input = "myFile.Rmd",
                  output_format = "html_document",
                  output_file = 'myFile.html',
                  output_dir = "//myDir/myFolder")
}

build_plots("1234")
 

Похоже, это просто обрабатывает файл в бесконечном цикле:

 processing file: myFile.Rmd


processing file:myFile.Rmd
 

И выдает пустой вывод в html-документе без графика.

Комментарии:

1. Что такое myFile.Rmd ? Это файл, который вы визуализируете… похоже, что вы ничего не делаете в своей функции для сохранения своего графика pb myFile.Rmd , и при этом вы не передаете его в качестве параметра или делаете что-либо, чтобы сделать его доступным за пределами этой функции в этом сеансе R. Как предполагается, что результат узнает о графике, который вы создали внутри функции внутри другого файла?

2. график является результатом функции, т.Е. Функция анализирует некоторые данные, а затем создает график. Как я могу сохранить pb графика в myFile.Rmd?

3. Кроме того, меня смущает «кажется, что файл просто обрабатывается в бесконечном цикле» и «выдает пустой вывод в документе html» . Обычно вещи либо (а) выполняются вечно и не выдают никаких выходных данных, либо (б) останавливаются и выдают выходные данные (даже если они пустые). Ваш делает и то, и другое? И обрабатывает несколько раз? Вы вызываете build_plots цикл? Обновляется ли выходной файл несколько раз в процессе (посмотрите на время последнего изменения в вашей ОС)?

4. Вывод функции обозначается return() или, если нет return() вызова, последней строкой функции. Как только функция выводит, она выполняется, и она останавливается. Your pb() является промежуточным объектом в функции, он не существует вне функции, потому что вы этого не return() делаете, и это не последняя строка функции.

5. Одним из простых способов сделать это было бы использовать saveRDS в вашей функции для записи pb в файл. Затем myFile.Rmd прочитайте файл RDS и отобразите график в фрагменте кода R.