在Shiny R App中使用read.xlsx

时间:2013-09-10 19:27:51

标签: r excel spreadsheet summary shiny

我正在尝试加载excel文件并显示摘要。文件加载时没有任何错误,但没有显示任何内容。

这是我的代码

ui.R

library(shiny)
shinyUI(pageWithSidebar(
     headerPanel("Analysis"),
     sidebarPanel(wellPanel(fileInput('file1', 'Choose XLSX File',
          accept=c('sheetName', 'header'), multiple=FALSE))),
mainPanel(
tabsetPanel(
  tabPanel("Tab1",h4("Summary"), htmlOutput("summary"))    
)))

server.R

      library(shiny)


shinyServer(function(input, output) {
 dataset = reactive({

    infile = input$file1  


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

    infile_read = read.xlsx(infile$datapath, 1)
    return(infile_read)

  })

 output$summary <- renderPrint({
   summary = summary(dataset())
   return(summary)
 })

  outputOptions(output, "summary", suspendWhenHidden = FALSE)

})

1 个答案:

答案 0 :(得分:1)

我没有对此进行测试,但看起来你实际上并没有从dataset()返回任何内容。将功能更改为:

dataset = reactive({

  infile = input$file1  

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

  read.xlsx(infile$datapath, 1)

})

执行infile_read = read.xlsx(infile$datapath, 1)时,您正在将文件读入infile_read,但之后您实际上并没有将其返回。 Reactives工作只是看看任何R函数。试试这个:

f <- function() x <- 10
f()

您应该看到f()没有返回任何内容。它所做的一切就是让任务无处可去。要实际返回'hello',您可以执行以下操作:

f <- function() {
  x <- 'hello'
  x
}

或者只是:

f <- function() 'hello'