3

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

这是我的代码

用户界面

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"))    
)))

服务器.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)

})
4

1 回答 1

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,但实际上并没有返回它。反应式工作看起来真的是任何 R 函数。尝试运行这个:

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

你应该看到它f()不会返回任何东西。它所做的只是完成一项无处可去的任务。要实际返回'hello',您将执行以下操作:

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

要不就:

f <- function() 'hello'
于 2013-09-12T13:14:06.820 回答