【发布时间】:2018-02-20 03:42:06
【问题描述】:
我在代表 n=500 和 m=31 的 nXm 矩阵中有 3 个度量(代表 1 个月内的相同度量,包括:(“执行功能”、“工作记忆”、“抑郁”),用于三个不同的“试验” (“Trial1”、“Trial2”、“Trial3”)。我有 6 个不同的矩阵来表示这些数据源的组合(即“Trial1_WM”)。我还有一个对应的变量和相应的日期。
我正在尝试构建一个 R Shiny 应用程序,我可以在其中选择这些数据集的子集以将它们绘制成直方图(即跨所有试验和跨日期范围的 WM,试验 1 的 WM 等)。我已经构建了小部件并构建了应用程序来绘制所有数据。但我无法弄清楚如何使用多个小部件来根据需要对数据进行分段。这是我要构建的所有小部件的一些工作代码,这些小部件目前仅适用于聚合数据(即所有 WM),并带有一个用于分箱数据的滑块:
图书馆(闪亮)
读入数据
Date <- seq(as.Date("2018-01-01"), as.Date("2018-01-31"), by="days")
Date <- as.matrix(t(Date))
N<- 500
M<-31
T1_EF <- matrix( rnorm(N*M,mean=23,sd=3), N, M)
T1_WM <- matrix( rnorm(N*M,mean=30,sd=4), N, M)
T1_DP <- matrix( rnorm(N*M,mean=30,sd=3.5), N, M)
T2_EF <- matrix( rnorm(N*M,mean=30,sd=3.5), N, M)
T2_WM <- matrix( rnorm(N*M,mean=40,sd=4), N, M)
T2_DP <- matrix( rnorm(N*M,mean=34,sd=4), N, M)
T3_EF <- matrix( rnorm(N*M,mean=35,sd=3), N, M)
T3_WM <- matrix( rnorm(N*M,mean=35,sd=3), N, M)
T3_DP <- matrix( rnorm(N*M,mean=40,sd=3), N, M)
Trial1_EF<- as.matrix(round(T1_EF, digits = 6))
Trial2_EF<- as.matrix(round(T2_EF, digits = 6))
Trial3_EF<- as.matrix(round(T3_EF, digits = 6))
Trial1_WM <-as.matrix(round(T1_WM,digits = 6))
Trial2_WM <-as.matrix(round(T2_WM,digits = 6))
Trial3_WM <-as.matrix(round(T3_WM, digits = 6))
Trial1_DP <-as.matrix(round(T1_DP, digits = 6))
Trial2_DP <-as.matrix(round(T2_DP, digits = 6))
Trial3_DP <-as.matrix(round(T3_DP = 6))
# Define UI ----
ui <- fluidPage(
titlePanel(code(strong("Tools"), style = "color:black")),
sidebarLayout(
sidebarPanel(
strong("Tools:"),
selectInput("Test",
label = "Choose a measure to display",
choices = c("Executive Functioning",
"Working Memory",
"Depression"
),
selected = "Executive Functioning"),
selectInput("Study",
label = "Choose a Study to display",
choices = c("Trial1",
"Trial2",
"Trial3",
"All"
),
selected = "All"),
selectInput("Uptake",
label = "Uptake",
choices = c("Prior Week",
"Prior Month",
"Study to Date"),
selected = "Study to Date"),
dateRangeInput("dates", label= "Date range"),
sliderInput(inputId="slider1", label = "Bins",
min = 1, max = 300, value = 200),
downloadButton("downloadData", "Download")),
mainPanel(
code(strong("Study Readout")),
plotOutput("distPlot")
))
)
# Define server logic ----
server <- function(input, output) {
output$distPlot <- renderPlot({
slider1 <- seq(floor(min(x)), ceiling(max(x)), length.out = input$slider1 + 1)
x <- switch(input$Test,
"Executive Functioning" = cbind(Trial1_EF,Trial2_EF,Trial3_EF),
"Working Memory" = cbind(Trial1_WM,Trial2_EF,Trial3_WM),
"Depression" = cbind(Trial1_DP,Trial2_EF,Trial3_DP)
color <- switch(input$Test,
"Executive Functioning" = "darkgreen",
"Working Memory" = "darkorange",
"Depression" = "darkviolet")
legend <- switch(input$Test,
"Executive Functioning" = "Executive Functioning",
"Working Memory" = "Working Memory",
"Depression" = "Depression")
hist(x, breaks = slider1, col=color, main=legend)
})
}
# Run ----
shinyApp(ui = ui, server = server)
【问题讨论】: