【问题标题】:convert Datatable to csv file in R在R中将Datatable转换为csv文件
【发布时间】:2017-02-28 05:07:15
【问题描述】:

我使用以下代码将 excel 文件上传到了闪亮的 R:

服务器.r

#reative function to read a table
MDPData<-reactive({
  file1<-input$MDPhistorical
  if(is.null(file1)){return()}
  z<-as.data.frame(read.xlsx(file1$datapath,sheetName = 'Probability Matrix'))      
})

#file info  
output$MDPDataTable<-DT::renderDataTable({
  if(is.null(MDPData())){return()}
  MDPData()
  DT::datatable(MDPData(),extensions = 'Responsive', options = list(pageLength=3), class = 'cell-border stripe', selection = "single")
})

ui.r的相关代码:

fluidRow(
  box(
    title = "Historical Data of different conditions", status = "primary", solidHeader = TRUE,
    collapsible = TRUE,
    DT::dataTableOutput("MDPDataTable")
   )
)

然后我想将 MDPDataTable 保存为 csv 文件。 我尝试使用 write.csv :

write.xlsx(MDPDataTable,'www/probabilitymatrix.csv')

错误如下:

Warning: Error in is.data.frame: object 'MDPDataTable' not found
Stack trace (innermost first):
    42: is.data.frame
    41: write.xlsx
    40: server [C:\Users\foad\Desktop\DSS Journal\NSS Protorype\Nss-28-2-17/server.R#902]
     1: shiny::runApp
Error in is.data.frame(x) : object 'MDPDataTable' not found

【问题讨论】:

  • 您不想将 HTML 表写入 CSV 文件,数据存储在 MDPData() 中。使用write.xlsx(MDPData(),'www/probabilitymatrix.csv'),虽然目前还不清楚你试图在哪里运行它。它需要位于反应对象可用的地方。
  • 谢谢,但是当我写 MDPData 时,它给了我另一个错误:警告:.getReactiveEnvironment()$currentContext 中的错误:没有活动的反应上下文不允许操作。 (您试图做一些只能从反应式表达式或观察者内部完成的事情。) .getReactiveEnvironment()$currentContext() 中的错误:在没有活动反应式上下文的情况下不允许操作。 (你试图做一些只能从反应式表达式或观察者内部完成的事情。)

标签: r datatable rdata rexcel shiny-reactivity


【解决方案1】:

它不起作用并且出现错误,因为正如 MrFlick 所说,您的 write.xlsx(...) 函数必须在反应对象中。我猜你正在使用ShinyApp 并下载data 你有一个downloadButton,那么代码将如下所示:

ui.R:

downloadButton('download',label='Download data')

服务器.R:

output$download <- downloadHandler( "probabilitymatrix.csv", content = function(file) { write.xlsx(MDPData(),'www/probabilitymatrix.csv')})

【讨论】:

    猜你喜欢
    • 2021-07-05
    • 2010-10-27
    • 1970-01-01
    • 2018-07-04
    • 1970-01-01
    • 1970-01-01
    • 2015-07-14
    • 2019-02-22
    • 1970-01-01
    相关资源
    最近更新 更多