在我使用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
表格正常生成。
提前感谢任何帮助和感谢!
答案 0 :(得分:3)
这是因为您传递的是从输入中获取的名称,而不是数据。所以你的代码相当于:
as.table(summary("Physiology2"))
这里你要做的只是数据的子集:
output$table <- renderTable(as.table(summary(Second[[input$Subject]])))