R Shiny中是否有R函数来了解各个类别的均值

时间:2019-06-04 13:12:08

标签: r shiny

我需要使以下代码具有交互性。我需要知道表中类别的含义。执行代码后,出现以下错误:

  

$运算符对于原子向量无效

我在代码中看到了一些错误

output$mean <- renderUI({tapply(Unit_Price, Material, mean)})

Unit_Price <- c(60, 49, 40, 61, 64, 60, 59, 54, 62, 69, 70, 42, 56,
                61, 61, 61, 58, 51, 48, 65, 49, 49, 41, 48, 52, 46,
                59, 46, 58, 43)

Material <- c("tas", "sa", "qld", "nsw", "nsw", "nt", "wa", "wa",
              "qld", "vic", "nsw", "vic", "qld", "qld", "sa", "tas",
              "sa", "nt", "wa", "vic", "qld", "nsw", "nsw", "wa",
              "sa", "act", "nsw", "vic", "vic", "act")

library(shiny)

ui <- fluidPage(
  sidebarLayout(
    sidebarPanel(selectInput("x","Value of x",choices = c("ComA","ComB")),
                 checkboxInput("mean","Mean Prices are"),
                 uiOutput("mean")),
    mainPanel(h6("Here it is"),
              tableOutput("message")
    )
  )
)

server <- function(input, output, session) {
  output$message <- renderTable(
    {
      if(input$x == "ComA")
      {
        data.frame(Unit_Price,Material)
      } else 
      {
        if(input$x == "ComB")
        {
          data.frame(Material=c("A","B"),Unit_Price=c(7,8))
        }
      }
    }
  )
  output$mean <- renderUI({tapply(Unit_Price, Material, mean)})
}

shinyApp(ui, server)

1 个答案:

答案 0 :(得分:0)

如果您将classpath:/my/Language.xtextbinrenderUI交换,至少您不会再收到错误消息了。

那是服务器部分:

renderTable

UI部分也必须进行相应调整。因此 output$mean <- renderTable(rownames = TRUE, { a <- tapply(Unit_Price, Material, mean) data.frame(a) }) 成为uiOutput

但是,对于我来说,您实际上正在努力实现的目标仍然不是很清楚。 数据tableOutputUnit_Price是否应该是交互式的,以便您计算当前所选data.frame的均值? 如果是这样,那么在Material中创建该data.frame就是有意义的,您可以在所有其他服务器功能中进行访问。

现在,您只需要在它们之间切换并在表格中显示它们,但是总会针对您在服务器功能之外分配的值计算均值。

这是一个使用反应式数据的示例。

编辑:由于均值表应仅在单击复选框时出现,因此我在reactive中包含了一个小的req(input$mean),它会一直等到单击复选框并返回是,否则代码将无法运行,并且该表也不会显示。

output$mean