2017-08-30 1 views
0

Ich brauche eine glänzende App einige Dateiinformationen wie Dateiname, Größe, Anzahl der Zeilen und Spalten abzurufen. Meine letzte Idee ist es, eine Box zu bauen, die automatisch die Metadaten anzeigt und wenn ich ein anderes Dataset importiere, wird es auch aktualisiert. Der ursprüngliche Code fand ich here, aber ich habe versucht, zu ändern. Irgendeine Hilfe? Ich bin neu in Shiny R.(Name, Größe, Zeilen und Spalten-Nummer) in Shiny R

ui <- fluidPage(

    titlePanel("Grabbing my file name"), 

    sidebarLayout(
    sidebarPanel(
     fileInput("file1", "Select your file", 
       multiple = FALSE, 
       accept = c("text/csv", 
          "text/comma-separated-values,text/plain", 
          ".csv",".xlsx")), 
    ), 
    mainPanel(
     textOutput("myFileName"), 
     textOutput("myFileSize"), 
     textOutput("myFileRow"), 
     textOutput("myFileCol"), 

    ) 
) 
) 

server <- function(input, output) { 

    file_name <- reactive({ 
    inFile <- input$file1 
    if (is.null(inFile)){ 
     return(NULL) 
     }else{ 
     return (inFile$name) 
     } 
    }) 
    output$myFileName <- renderText({ file_name() }) 

    file_size <- reactive({ 
    inFile <- input$file1 
    if (is.null(inFile)){ 
     return(NULL) 
    }else{ 
     return (file.size(inFile$name)) 
    } 
    }) 
    output$myFileSize <- renderText({ file_size() }) 

    file_row <- reactive({ 
    inFile <- input$file1 
    if (is.null(inFile)){ 
     return(NULL) 
    }else{ 
     return (nrow(inFile)) 
    } 
    }) 
    output$myFileRow <- renderText({ file_row() }) 

    file_col <- reactive({ 
    inFile <- input$file1 
    if (is.null(inFile)){ 
     return(NULL) 
    }else{ 
     return (ncol(inFile)) 
    } 
    }) 
    output$myFileCol <- renderText({ file_col() }) 

} 

# Run the application 
shinyApp(ui = ui, server = server) 
+0

Was ist das Problem? Erhalten Sie eine Fehlermeldung? Ein unerwünschtes Verhalten? –

+0

Mein vorheriger Code lieferte nicht alle Informationen, die ich aus meinem Datensatz benötige, aber er wurde bereits von Akrun gelöst. Danke trotzdem, Alexandre Fenyo. –

Antwort

0

Wir müssen den Datensatz lesen, die ncol/nrow zu erhalten. Es wäre effizienter sein, die Daten einmal zu lesen und bekommen die ncol/nrow (hier wir dim verwendet, das zu bekommen, anstatt ncol/nrow zu wiederholen.

library(shiny) 

-ui

ui <- fluidPage(

    titlePanel("Grabbing my file name"), 

    sidebarLayout(
    sidebarPanel(
     fileInput('file1', 'Select your file', 
       accept = c(
        'text/csv', 
        'text/comma-separated-values', 
        '.csv' 
       ) 
    ) 
    ), 
    mainPanel(
     textOutput("myFileName"), 
     textOutput("myFileSize"), 
     textOutput("myFileColrow") 

    ) 
) 
) 

-Server

server <- function(input, output) { 

    file_name <- reactive({ 
    inFile <- input$file1 

    if (is.null(inFile)) 
     return(NULL) else return (tools::file_path_sans_ext(inFile$name)) 
    })  

    file_colrowsize <- reactive({ 
    inFile <- input$file1 
    if (is.null(inFile)){ 
     return(NULL) 
    }else{ 
    tmp <- read.csv(inFile$datapath) 
     return (list(dim(tmp), object.size(tmp))) 
    } 
    })  

    output$myFileName <- renderText({ file_name() }) 
    output$myFileColrow <- renderText({ file_colrowsize()[[1]] }) 
    output$myFileSize <- renderText({file_colrowsize()[[2]]})  

} 

-Run die Anwendung

shinyApp(ui = ui, server = server) 

Ausgabe vom Laufen

enter image description here

enter image description here

HINWEIS: Wir haben auch die beiden reactive zu einem einzigen kombinieren konnte und dann wieder ein list mit 3 Elementen - 1) Dateiname, 2) Dateigröße 3) Abmessungen

+0

Danke! Das habe ich gesucht! Ich werde weiter glänzend lernen, ich muss noch viel lernen! Danke für Ihre Hilfe! –

+0

@LucasBianchi Vielen Dank für die Kommentare. Sie können auch [hier] (https://stackoverflow.com/help/someone-answers) überprüfen – akrun