我是R和Shiny的初学者,我有一点问题。
如果你能帮忙,我真的很感激。
例如,我已将变量Group添加到R数据框" mtcars"以字符格式。现在我有3组汽车:1,2和3,取决于" mpg"每辆车的水平。
我想要一个renderText显示我检查过的组的车数,第二个用于显示已检查组的4个车辆的数量,第三个用于显示已检查组的4个车辆数量6辆车,第四辆显示6辆车的数量。
如果我只保留Group textRender,它的效果很好,但是当我添加其他3个时,会出现错误而我找不到原因。
这是代码:
ui.R
library(shiny)
shinyUI(pageWithSidebar(
headerPanel("Example"),
sidebarPanel(checkboxGroupInput("dynamic", "Groups", label = "Groups",
choices = c("Group 1"="1","Group 2"="2","Group 3" = "3"))),
mainPanel(("Group : "), textOutput("textDisplay"),
("4 cylinders : "), textOutput("text4cyl"),
("6 cylinders : "), textOutput("text6cyl"),
("8 cylinders : "), textOutput("text8cyl"))))
server.R
library(shiny)
shinyServer(function(input, output) {
output$textDisplay <- renderText({
a<-sum(mtcars$Group %in% input$dynamic)
output$text4cyl <- renderText({
b<-sum(mtcars$Group %in% input$dynamic) & mtcars$cyl ==4
output$text6cyl <- renderText({
c<-sum(mtcars$Group %in% input$dynamic) & mtcars$cyl ==6
output$text8cyl <- renderText({
d<-sum(mtcars$Group %in% input$dynamic) & mtcars$cyl ==8})})})})})
非常感谢您的帮助,对不起我的英语。
答案 0 :(得分:0)
我刚刚创建了可能与您不同的分组。这是一种可能的解决方案:
ui.R
library(shiny)
shinyUI(pageWithSidebar(
headerPanel("Example"),
sidebarPanel(checkboxGroupInput("dynamic", label = "Groups",
choices = list("Group 1"= "1","Group 2" = "2","Group 3" = "3"),
selected = c(1,2,3))),
mainPanel(("Group : "), textOutput("textDisplay"),
("4 cylinders : "), textOutput("text4cyl"),
("6 cylinders : "), textOutput("text6cyl"),
("8 cylinders : "), textOutput("text8cyl"))))
server.R
library(shiny)
library(dplyr)
group <- c(rep("1", 11), rep("2", 11), rep("3", 10))
group
mtcars$Group<-factor(group)
shinyServer(function(input, output) {
selection <- reactive({
filter(mtcars, Group %in% input$dynamic)
})
output$textDisplay <- renderText({
NROW(selection())
})
output$text4cyl <- renderText({
tmp <- selection()
NROW(filter(tmp, cyl == 4))
})
output$text6cyl <- renderText({
tmp <- selection()
NROW(filter(tmp, cyl == 6))
})
output$text8cyl <- renderText({
tmp <- selection()
NROW(filter(tmp, cyl == 8))
})
})