2016-08-08 3 views
2

https://cran.r-project.org/web/packages/formattable/formattable.pdfКоманда для экспорта/сохранения таблицы сделаны с Formattable пакета в R

Я использую Formattable пакет, чтобы сделать некоторые хорошо выглядящие таблицы в R. Я пытаюсь сохранить таблицы в виде изображений (или на самом деле любой формат файла), но не может найти команду, которая работает. Использование функции jpeg/png или dev.copy создает пустые документы. В идеале я хотел бы сохранить эти таблицы в цикле. Кто-нибудь знает, как это можно сделать?

данные:

library(formattable) 
DF <- data.frame(Ticker=c("", "", "", "IBM", "AAPL", "MSFT"), 
       Name=c("Dow Jones", "S&P 500", "Technology", 
         "IBM", "Apple", "Microsoft"), 
       Value=accounting(c(15988.08, 1880.33, NA, 
            130.00, 97.05, 50.99)), 
       Change=percent(c(-0.0239, -0.0216, 0.021, 
            -0.0219, -0.0248, -0.0399))) 

formattable(DF, list(
    Name=formatter(
    "span", 
    style = x ~ ifelse(x == "Technology", 
         style(font.weight = "bold"), NA)), 
    Value = color_tile("white", "orange"), 
    Change = formatter(
    "span", 
    style = x ~ style(color = ifelse(x < 0 , "red", "green")), 
    x ~ icontext(ifelse(x < 0, "arrow-down", "arrow-up"), x))) 
) 
+0

Это похоже на запрос инструмента, который должен быть закрыт. Вы можете избежать этого, добавив небольшой воспроизводимый пример (данные и код), который вы хотите «вообразить». –

ответ

3

Чтобы сэкономить formattable вы можете использовать 'as.htmlwidget', а затем PrintScreen его. Первый запуск следующей функции:

library("htmltools") 
library("webshot")  

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) 
    } 

(источник: https://github.com/renkun-ken/formattable/issues/26)

Затем в коде Ассинг formattable переменной и использовать функцию, чтобы сохранить его.

FT <- formattable(DF, list(
    Name=formatter("span", 
       style = x ~ ifelse(x == "Technology", style(font.weight = "bold"), NA)), 
    Value = color_tile("white", "orange"), 
    Change = formatter("span", 
        style = x ~ style(color = ifelse(x < 0 , "red", "green")), 
        x ~ icontext(ifelse(x < 0, "arrow-down", "arrow-up"), x)))) 

export_formattable(FT,"FT.png") 

С уважением.