我需要使以下代码具有交互性。我需要知道表中类别的含义。执行代码后,出现以下错误:
$运算符对于原子向量无效
我在代码中看到了一些错误
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)
答案 0 :(得分:0)
如果您将classpath:/my/Language.xtextbin
与renderUI
交换,至少您不会再收到错误消息了。
那是服务器部分:
renderTable
UI部分也必须进行相应调整。因此 output$mean <- renderTable(rownames = TRUE, {
a <- tapply(Unit_Price, Material, mean)
data.frame(a)
})
成为uiOutput
。
但是,对于我来说,您实际上正在努力实现的目标仍然不是很清楚。
数据tableOutput
和Unit_Price
是否应该是交互式的,以便您计算当前所选data.frame的均值?
如果是这样,那么在Material
中创建该data.frame就是有意义的,您可以在所有其他服务器功能中进行访问。
现在,您只需要在它们之间切换并在表格中显示它们,但是总会针对您在服务器功能之外分配的值计算均值。
这是一个使用反应式数据的示例。
编辑:由于均值表应仅在单击复选框时出现,因此我在reactive
中包含了一个小的req(input$mean)
,它会一直等到单击复选框并返回是,否则代码将无法运行,并且该表也不会显示。
output$mean