Почему использование kable_save для написания pdf-таблицы приводит к удалению html-таблиц с одинаковыми именами? - PullRequest
0 голосов
/ 31 января 2019

Используя kableExtra :: save_kable, я обнаружил, что сохранение в формате PDF приводит к удалению ранее сохраненной HTML-таблицы с тем же именем.В этом примере:

df <- data.frame(a = c(1:4), b = c(5:8))
df <- kableExtra::kable(df)
kableExtra::save_kable(df, file = "table.html")
kableExtra::save_kable(df, file = "table.pdf")

сохраняется только table.pdf.

Однако после замены порядка:

df <- data.frame(a = c(1:4), b = c(5:8))
df <- kableExtra::kable(df)
kableExtra::save_kable(df, file = "table.pdf")
kableExtra::save_kable(df, file = "table.html")

обе таблицы теперь сохранены.

Это дает мне исправление, но мне интересно, если это поведениедизайн и может ли он быть изменен без изменения порядка кода, что я не всегда хочу делать.

1 Ответ

0 голосов
/ 31 января 2019

Поведение не может быть изменено без изменения функции.Когда вы вводите save_kable HTML и запрашиваете вывод PDF, он записывает HTML-файл (перезаписывает все, что уже существует), преобразует его в PDF, а затем удаляет HTML-файл для последующей очистки. Это можно увидеть, посмотрев код на Github (unlink - это команда R для удаления файла).

Несколько параметров:

  • Файлзапрос функции с kableExtra и надеюсь, что они реагируют.
  • Измените код самостоятельно.Функция save_kable_latex принимает необязательный аргумент для хранения промежуточного файла .tex, здесь вы можете использовать тот же подход.
  • Если вам часто нужны и PDF, и HTML, вы можете написать небольшую функцию-обертку, которая вызываетэти два в правильном порядке, например,
# (untested)
save_kable_pdf_html = function(..., file) {
  kableExtra::save_kable(..., file = paste0(file, ".pdf"))
  kableExtra::save_kable(df, file = paste0(file, ".html"))
}
...