2017-01-02 44 views
3

我想从文件读取data.frame,然后将其用于稍后制作图。 问题是,当我读取数据时,它是输出对象的一部分,无法继续使用。我想使用csv文件中的数据来制作许多不同的图。 这是一个小例子,其中csv文件有两列,我想要做的是在函数服务器的末尾。R闪亮:从文件中读取表格并使用它

shiny::runApp(list(
ui=pageWithSidebar(
    headerPanel('Simple matrixInput') 
    , 
    sidebarPanel(
     fileInput('file1', 'Choose CSV File', 
        accept=c('text/csv', 'text/comma-separated- values,text/plain', '.csv')) 
     , 
     tags$hr(), 
     checkboxInput('header', 'Header', TRUE), 
     radioButtons('sep', 'Separator', 
        c(Comma=',', 
         Semicolon=';', 
         Tab='\t'), 
        'Comma'), 

     radioButtons('dec', 'Desimal seperator', 
        c('komma'=",", 
         'punktum'="."), 'komma') 
    ) 
    , 
    mainPanel(

     tableOutput(outputId = 'table.output'), 
     plotOutput("plot1") 
    )) 
, 
server=function(input, output){ 
    output$table.output <- renderTable({ 

     inFile <- input$file1 

     if (is.null(inFile)) 
      return(NULL) 

     tbl <- read.csv(inFile$datapath, header=input$header, sep=input$sep, dec = input$dec) 

     return(tbl) 
    }) 

    #I also want to do this: 
    # output$plot1 <- plot(tbl[,1], tbl[,2]) 
} 
)) 
+0

您是否尝试读取文件的'reactive'的服务器部分下面的变化? – user5029763

回答

6

利用活性功能:

请在App

library(shiny) 

shinyServer(function(input, output) { 

mydata <- reactive({ 

inFile <- input$file1 

if (is.null(inFile)) 
    return(NULL) 

tbl <- read.csv(inFile$datapath, header=input$header, sep=input$sep, dec = input$dec) 

return(tbl) 
}) 

output$table.output <- renderTable({ 
mydata() 
}) 

output$plot1 <- renderPlot({ 
    x <- mydata()[,1] 
    plot(x) 
}) 
}) 
+0

它的工作,谢谢! – Anja