在Shiny R App中使用read.xlsx
我正在尝试加载一个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) })
我没有testing过这个,但是看起来你并没有从dataset()
返回任何东西。 将function更改为:
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的工作只是看看任何Rfunction。 尝试运行这个:
f <- function() x <- 10 f()
你应该看到f()
不返回任何东西。 它所做的只是做一个无处可去的任务。 要实际返回'hello'
你可以这样做:
f <- function() { x <- 'hello' x }
要不就:
f <- function() 'hello'