Как сделать, чтобы форматируемый R отображался в PDF-файле и как проценты в таблице
Я начинаю использовать R
formattable
пакет и по-прежнему сталкивается с некоторыми проблемами, чтобы иметь куски с 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)
}