Как сделать, чтобы форматируемый R отображался в PDF-файле и как проценты в таблице

Я начинаю использовать Rformattableпакет и по-прежнему сталкивается с некоторыми проблемами, чтобы иметь куски с formattable() правильно вывести pdf документ.

Первая проблема: как получить числа в процентном формате после применения любого из color_* функции доступны только для числового класса?

Смотрите таблицу ниже из представленного кода, выполненного / запущенного в Rокружающая среда.

a<-formattable(x=a,list(A=color_bar("orange", 0.2),B=color_bar("orange", 0.2),C=color_bar("orange", 0.2),D=color_bar("orange", 0.2),E=color_bar("orange", 0.2)))

Предполагать a как csvфайл, который я ввел read.csv(),

введите описание изображения здесь

Я хочу, чтобы "%" вставил вместе числа и одновременно оранжевые столбцы из formattable, но если я преобразую numeric в percent либо percent() от scale или paste(a,"%",sep="") форматирование не будет работать numeric необходимо.

Вторая проблема: при рендеринге в pdf такая таблица из представленного фрагмента не создается должным образом. Я пытался использовать прямой вывод из formattable(a,list...), от print(a)и по print(xtable(a)) но никак не сработало. Любой намек?

1 ответ

Решение первой части вашего вопроса:

df <- data.frame(
  id = 1:10,
  A = sample(20:80, 10),
  B = sample(1:1000, 10),
  C = sample(1:10, 10),
  D = percent(runif(10, 0, 1), format = "d"), 
  E = percent(runif(10, 0, 1), format = "d"), 
  stringsAsFactors = FALSE)

formattable(df, list(
  A = color_tile("black", 0.2),
  B = color_tile("pink", 0.2),
  C = color_tile("orange", "gray"),
  D = color_tile("blue", 0.2),
  E = color_tile("green", 0.2)))

См. Документацию для получения дополнительной информации: https://github.com/renkun-ken/formattable

Что касается рендеринга PDF - вы всегда можете сделать свою таблицу "htmlwidget", а затем сделать ее распечатку в формате PDF. В R вы можете попробовать эту функцию (источник):

#' Export a Formattable as PNG, PDF, or JPEG
#'
#' @param f A formattable.
#' @param file Export path with extension .png, .pdf, or .jpeg.
#' @param width Width specification of the html widget being exported.
#' @param height Height specification of the html widget being exported.
#' @param background Background color specification.
#' @param delay Time to wait before taking webshot, in seconds.
#'
#' @importFrom formattable as.htmlwidget
#' @importFrom htmltools html_print
#' @importFrom webshot webshot
#'
#' @export
export_formattable <- function(f, file, width = "100%", height = NULL, 
                               background = "white", delay = 0.2)
{
  w <- as.htmlwidget(f, width = width, height = height)
  path <- html_print(w, background = background, viewer = NULL)
  url <- paste0("file:///", gsub("\\\\", "/", normalizePath(path)))
  webshot(url,
          file = file,
          selector = ".formattable_widget",
          delay = delay)
}
Другие вопросы по тегам