#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()
вызова, последней строкой функции. Как только функция выводит, она выполняется, и она останавливается. Yourpb()
является промежуточным объектом в функции, он не существует вне функции, потому что вы этого неreturn()
делаете, и это не последняя строка функции.5. Одним из простых способов сделать это было бы использовать
saveRDS
в вашей функции для записиpb
в файл. ЗатемmyFile.Rmd
прочитайте файл RDS и отобразите график в фрагменте кода R.