无法传递selectInput以在r shiny中输出$ table summary

时间:2018-05-05 20:18:48

标签: r shiny

在我使用Shiny的第一个月。 我想创建一个简单的应用程序供我的学校使用,以显示已通过和失败的学生的摘要。 这是一个可重现的例子,我将指出错误:

library(shiny)

Physiology <- c(49, 64, 74, 84)
Physiology2 <- ifelse(Physiology < 50, "Fail", "Pass")

Biochemistry <- c(49, 46, 74, 84)
Biochemistry2 <- ifelse(Biochemistry < 50, "Fail", "Pass")

Second <- data.frame(cbind(Physiology, Physiology2, Biochemistry, Biochemistry2))

Second$Physiology <- as.numeric(as.character(Second$Physiology))
Second$Biochemistry <- as.numeric(as.character(Second$Biochemistry))

UI:

ui <- fluidPage(
            selectInput("Subject", 
                        "Choose Subject", 
                        choices=list("Physiology2", "Biochemistry2")),
            tableOutput("table")
            )            

服务器:

server <- shinyServer(function(input, output) {
      output$table <- renderTable(as.table(summary({input$Subject})))
})

shinyApp(ui, server)

我收到以下错误

'dimnames' applied to non-array

这里的问题是

input$Subject
服务器中的

未通过。 我手动做的时候

Second$Physiology2

表格正常生成。

提前感谢任何帮助和感谢!

1 个答案:

答案 0 :(得分:3)

这是因为您传递的是从输入中获取的名称,而不是数据。所以你的代码相当于:

as.table(summary("Physiology2"))

这里你要做的只是数据的子集:

output$table <- renderTable(as.table(summary(Second[[input$Subject]])))