下载闪亮的rpivotTable输出 [英] download rpivotTable output in shiny

查看:163
本文介绍了下载闪亮的rpivotTable输出的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我找到了一个有趣的包rpivotTable. 我想创建包含rpivotTableshiny app,并可以使用downloadHandler下载生成的数据.

I've found an interesting package rpivotTable. I'd like to create shiny app which includes rpivotTable with the possibility to download generated data using downloadHandler.

但是,我找不到解决方案,如何创建data.frame或其他可以传递给downloadHandler函数的东西.

However, I am unable to find the solution, how to create data.frame or something else which I'd be able to pass to the downloadHandler function.

rpivotTable创建一个类的对象:

class(pivot)
[1] "rpivotTable" "htmlwidget" 

有没有可能下载此函数的输出?

Is threne any possibilities to download the output of the this function?

此外,我还附上示例,如何以闪亮的方式创建枢轴以及我想使用的下载功能的示例.

Also, I enclose the example, how the pivot is created in shiny and the example of download function which I'd like to use.

也许还有其他想法或建议吗?

Maybe are the any other ideas or suggestions?

set.seed(1992)
n=99
Year <- sample(2013:2015, n, replace = TRUE, prob = NULL)
Month <- sample(1:12, n, replace = TRUE, prob = NULL)
Category <- sample(c("Car", "Bus", "Bike"), n, replace = TRUE, prob = NULL)
Brand <- sample("Brand", n, replace = TRUE, prob = NULL)
Brand <- paste0(Brand, sample(1:14, n, replace = TRUE, prob = NULL))
USD <- abs(rnorm(n))*100

df <- data.frame(Year, Month, Category, Brand, USD)



output$Pivot <- rpivotTable::renderRpivotTable({
 rpivotTable(data = df, rows = "Brand", col = "Category", vals = "USD", aggregatorName = "Sum", rendererName = "Table")
})



  output$downloadData <- downloadHandler(
   filename = function() { paste(filename, '.csv', sep='') },
   content = function(file) {
   write.csv(PivotOutput, file)
})

推荐答案

我刚刚在github上的rpivotTable的master分支上进行了一项更改,该更改解决了获取用户在服务器上查看过的参数的问题一侧.

I've just pushed on the master branch of rpivotTable on github a change that addresses the issue of getting the parameters the user is / has looked at on the server side.

使用devtools下载rpivotTable代码:

devtools::install_github("smartinsightsfromdata/rpivotTable",ref="master")

这是如何在服务器端获取所选数据的示例.该示例不足以满足您的需要:您需要使用从rpivotTable返回的内容对原始数据帧进行子集化.但这足以让您有一个良好的开端.

This is an example of how to get the selected data on the server side. The example is not complete for your needs: you need to subset the original data frame with what you get back from rpivotTable. But this should be enough to give you an head start.

library(rpivotTable)
library(shiny)

list_to_string <- function(obj, listname) {
  if (is.null(names(obj))) {
    paste(listname, "[[", seq_along(obj), "]] = ", obj,
          sep = "", collapse = "\n")
  } else {
    paste(listname, "$", names(obj), " = ", obj,
          sep = "", collapse = "\n")
  }
}

server <- function(input, output) {

output$pivotRefresh <- renderText({

cnames <- list("cols","rows","vals", "exclusions","aggregatorName", "rendererName")
# Apply a function to all keys, to get corresponding values
allvalues <- lapply(cnames, function(name) {
  item <- input$myPivotData[[name]]
  if (is.list(item)) {
    list_to_string(item, name)
  } else {
    paste(name, item, sep=" = ")
  }
})
paste(allvalues, collapse = "\n")
})

output$mypivot = renderRpivotTable({
    rpivotTable(data=cars, onRefresh=htmlwidgets::JS("function(config) { Shiny.onInputChange('myPivotData', config); }"))
  })
}

ui <- shinyUI(fluidPage(
  fluidRow(column(6,   verbatimTextOutput("pivotRefresh")),
           column(6, rpivotTableOutput("mypivot") ))
)
)

shinyApp(ui = ui, server = server) 

这篇关于下载闪亮的rpivotTable输出的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆