闪亮R-反应性不适用于条件面板
问题: 在我的应用程序中,侧面板中有两个选项卡 统计和图表- 在统计信息中,我想根据主面板中选择的数据(选择输入选择数据)和选择分组输入(选择所选数据的列),显示数据框和一些描述性统计信息(工作正常) 在图表中,我有一个所选数据列的下拉列表,并希望为它们显示条形图 现在,如果我不将selectgroupinput的条件面板仅显示在Stat选项卡中,而将selectinput下拉到Chart选项卡中(即在选择数据时,列会自动更新),那么这项工作将顺利进行 现在,当我将条件面板放在这一点上时,它对“统计”选项卡起作用,但在“图表”选项卡中,列在更改数据集时无法正常工作。 我必须单击Stat选项卡,然后再次单击back to Charts选项卡,以使数据的实际列显示在下拉列表中-简言之,数据集和列下拉列表的反应性没有发挥应有的作用 我这里有一个可复制的代码示例: 代码: 服务器.r闪亮R-反应性不适用于条件面板,r,shiny,R,Shiny,问题: 在我的应用程序中,侧面板中有两个选项卡 统计和图表- 在统计信息中,我想根据主面板中选择的数据(选择输入选择数据)和选择分组输入(选择所选数据的列),显示数据框和一些描述性统计信息(工作正常) 在图表中,我有一个所选数据列的下拉列表,并希望为它们显示条形图 现在,如果我不将selectgroupinput的条件面板仅显示在Stat选项卡中,而将selectinput下拉到Chart选项卡中(即在选择数据时,列会自动更新),那么这项工作将顺利进行 现在,当我将条件面板放在这一点上时,它对“
ibrary(shiny)
#library(RODBC)
library(ggplot2)
#library(shinyjs)
#stat_helper_function to be used in rendering stat table
summary <- function(x) {
funs <- c(mean, median, sd, mad, IQR,max,min)
lapply(funs, function(f) f(x, na.rm = TRUE))
}
make_stat <- function(data){
numeric_columns <- sapply(data,is.numeric)
stat_table <- sapply(data[,numeric_columns],summary)
rows <- c("Mean","Median","SD","MAD","IQR","Max","Min")
df <- data.frame(stat_table,row.names = rows)
}
#sample prototypeof Data
data_sets <- c("iris","diamonds")
shinyServer(function(input, output) {
output$choose_dataset <- renderUI({
selectInput("Dataset",label = "choose a dataset",as.list(data_sets))
})
output$choose_columns <- renderUI({
if(is.null(input$Dataset))
return()
dat <<- get(input$Dataset) # make it globally accessable _saves the pain of multiple load of the data
colnames <- names(dat)
checkboxGroupInput("columns", "Choose columns",
choices = colnames,
selected = colnames)
})
output$plot_control <- renderUI({
if(is.null(input$Dataset))
return()
dat #<- get(input$Dataset)
numeric_columns <- sapply(dat,is.numeric)
num_dat <- dat[,numeric_columns]
colnames <- names(num_dat)
selectInput("selectize","For the X axis and Y axis",choices=colnames)
})
output$histo_gram <- renderPlot({
if(is.null(input$Dataset))
return()
#z<- matrix(num_dat,ncol = ncol(num_dat))
numeric_columns <- sapply(dat,is.numeric)
num_dat <- dat[,numeric_columns]
num_dat
if (is.null(input$selectize) || !(input$selectize %in% names(num_dat)))
return()
z <- num_dat[,input$selectize]
# bw <- diff(range(z)) / (2 * IQR(z) / length(z)^(1/3))
qplot(z,geom ="histogram")
})
output$mytable1 <- renderDataTable({
if(is.null(input$Dataset))
return()
#dat <- get(input$Dataset)
dat
if (is.null(input$columns) || !(input$columns %in% names(dat)))
return()
# Keep the selected columns
dat <- dat[, input$columns, drop = FALSE]
dat}, options=list(lengthMenu = c(5, 8, 10), pageLength = 5)
)
output$stat_table <- renderTable({
dat #<- get(input$Dataset)
num_dat <- dat[,input$columns,drop=FALSE]
make_stat(num_dat)
}
)
})
# This is the user-interface definition of a Shiny web application.
# You can find out more about building applications with Shiny here:
#
# http://www.rstudio.com/shiny/
#
library(shiny)
library(ggplot2)
shinyUI (pageWithSidebar(
headerPanel("Creepy-Stats"),
sidebarPanel(
uiOutput("choose_dataset"),
br(),
conditionalPanel(
condition ="input.conditionedPanels == 'Stats'",uiOutput("choose_columns")),
conditionalPanel(condition ="input.conditionedPanels == 'Charts'" ,uiOutput("plot_control")), width = 2
#
# uiOutput("choose_columns"),uiOutput("plot_control"),width = 2
),
mainPanel(
tabsetPanel(
tabPanel("Stats",
div (class='row',
div(dataTableOutput("mytable1"),class="span10"),
div(tableOutput("stat_table"),class="span5")
),id = "conditionedPanels"
)
,
tabPanel("Charts",
div(class='row',
div(plotOutput("histo_gram"),class="span10"))
),id = "conditionedPanels"
),width = 10
)
))