Я пытаюсь сохранить фрейм данных в виде файла изображения, используя flextable, с конечной целью построить его рядом с объектом ggplot. Вот пример кода:
library(flextable)
ft <- flextable( head( mtcars ) )
ft <- autofit(ft)
tf <- tempfile(fileext = ".png")
save_as_image(ft, tf)
который возвращает следующую ошибку:
Could not load file:///D:/Antonis/Documents/file:/C:/Users/Antonis/AppData/Local/Temp/RtmpmgSSYv/file2510dc77c47.html
Error in webshot::webshot(url = sprintf("file://%s", tf), file = path, :
webshot.js returned failure value: 1
In addition: Warning message:
In normalizePath(path.expand(path), winslash, mustWork) :
path[1] = "file://C:\Users\Antonis\AppData\Local\Temp\RtmpmgSSYv\file2510dc77c47.html": The filename, directory name, or volume label syntax is incorrect
Кажется, что путь к файлу неверен. Я попытался изменить рабочий каталог с помощью setwd:
setwd("C:/Users/Antonis/AppData/Local/Temp/RtmpmgSSYv")
но ошибка сохраняется:
Could not load file:///C:/Users/Antonis/AppData/Local/Temp/RtmpmgSSYv/file:/C:/Users/Antonis/AppData/Local/Temp/RtmpmgSSYv/file25105e4f2c8b.html
Error in webshot::webshot(url = sprintf("file://%s", tf), file = path, :
webshot.js returned failure value: 1
In addition: Warning message:
In normalizePath(path.expand(path), winslash, mustWork) :
path[1] = "file://C:\Users\Antonis\AppData\Local\Temp\RtmpmgSSYv\file25105e4f2c8b.html": The filename, directory name, or volume label syntax is incorrect
То же самое происходит, когда я пытаюсь установить путь через команду tempfile:
tf <- tempfile(tmpdir = "C:/Users/Antonis/AppData/Local/Temp/RtmpmgSSYv", fileext = ".png")
Файл справки save_as_image также не предлагает никакой информации.
Приведенный выше код довольно общий и фактически взят из сообщения в блоге, поэтому моя проблема кажется локальной. Какие-либо предложения?
Не уверен насчет flextable
, но вы можете использовать tableHTML
для этого в качестве альтернативы. Вы можете указать файл для локального сохранения или он будет автоматически сохранен во временном файле.
library(tableHTML)
mtcars %>%
head() %>%
tableHTML() %>%
add_theme('scientific') %>%
tableHTML_to_image()
Выход:
Спасибо, это действительно работает. Я думаю, это другой вопрос, но: есть ли способ объединить ваш вывод html с другим ggplot (например, в flextable)?
Рад помочь. Нет, в настоящее время он недоступен, но определенно есть что добавить. Я добавлю его на github в качестве новой функции.
Зависит от того, как вы хотите объединить их в HTML. Это на веб-сайте, блестящем, rmarkdown? Кстати, по вашему предыдущему вопросу я подумал, что вы можете указать файл для сохранения tableHTML (аргумент file
в tableHTML_to_image
). Затем прочитайте его как растр с помощью png::readPNG
, а затем добавьте его в функцию cowplot::plot_grid
. Это должно работать, и вы можете комбинировать оба.
Действительно работает, спасибо! На самом деле он работает даже без чтения растра. После сохранения файла изображения вы можете использовать ggdraw() + draw_image(), чтобы сохранить сохраненное изображение в качестве второго «графика», а затем объединить их с помощью plot_grid().
Есть ошибка с версией Windows (неверно
file:///
...) Я скоро это исправлю