2017-02-28 6 views
0

I a téléchargé un fichier Excel dans R brillant en utilisant le code suivant:convertir Datatable de fichier CSV dans R

Server.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") 
}) 

Les codes pertinents pour ui.r:

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

Ensuite, je veux enregistrer MDPDataTable en tant que fichier csv. Je essayé d'utiliser write.csv:

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

et l'erreur est la suivante:

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 
+0

Vous ne voulez pas écrire la table HTML dans un fichier CSV, les données sont stockées dans 'MDPData()'. Utilisez 'write.xlsx (MDPData(), 'www/probabilitymatrix.csv')' bien qu'il soit difficile de savoir exactement où vous avez essayé de l'exécuter. Il doit être quelque part cet objet réactif est disponible. – MrFlick

+0

Merci mais quand j'ai écrit MDPData, cela me donne une autre erreur: Attention: Erreur dans .getReactiveEnvironment() $ currentContext: Opération non autorisée sans un contexte réactif actif. (Vous avez essayé de faire quelque chose qui ne peut être fait qu'à l'intérieur d'une expression réactive ou d'un observateur.) Erreur dans .getReactiveEnvironment() $ currentContext(): Opération non autorisée sans contexte réactif actif. (Vous avez essayé de faire quelque chose qui ne peut être fait qu'à l'intérieur d'une expression réactive ou d'un observateur.) – user

Répondre

1

Il ne fonctionne pas et erreur apparaît parce que comme l'a dit MrFlick, votre fonction doit être objet réactif . Je suppose que vous utilisez ShinyApp et pour télécharger data vous avez un downloadButton, le code ressemblerait que:

ui.R:

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

server.R:

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