r - Rshiny:在数据帧比较期间选择“两者”选项时如何显示标题?
问题描述
在 Select 选项中,我有 Dataframes emp.data_A 和 emp.data_B。当我选择“两者”时,我比较了列工资的两个数据框,它在整个比较过程中显示了不同的颜色值。目前效果很好。
但是当我选择“两者”时。从备选方案中,我希望出现一个标题,上面写着“emp A 和 emp B 之间的比较”。在 R Shiny 中完成它的最佳方法是什么?请有人帮助我。
library(shiny)
library(gt)
emp.data_A <- data.frame(
emp_id = c(1:5),
emp_name = c("Rick","Dan","Michelle","Ryan","Gary"),
salary = c(623.3,515.2,611.0,735.0,844.25),
credit = c(1,2,3,4,5))
emp.data_A
emp.data_B <- data.frame(
emp_id = c(1:5),
emp_name = c("Rick","Dan","Michelle","Ryan","Gary"),
salary = c(623.3,515.2,611.0,729.0,843.25))
emp.data_B
shinyApp(
ui = fluidPage(
fluidRow(
selectInput("dataset5",
"Choose a dataset:",
choices = c("SelectDataSet", "both", "emp.data_A", "emp.data_B")),
downloadButton("downloadData5", "Download")
),
hr(),
fluidRow(
column(width = 6, gt_output("table1")),
column(width = 6, gt_output("table2"))
)
),
server = function(input, output,session) {
datasetInput1 <- reactive({
if (input$dataset5 == "both" || input$dataset5 == "emp.data_A") {
emp.data_A
} else if (input$dataset5 == "emp.data_B") {
emp.data_B
}
})
datasetInput2 <- reactive({
if (input$dataset5 == "both") {
tbl_diffs <- dplyr::anti_join(emp.data_B, emp.data_A, by = c('emp_name', 'salary'))
tbl_gt_B <- emp.data_B %>% gt()
for (i in tbl_diffs$emp_id) {
tbl_gt_B <- tbl_gt_B %>%
tab_style(
style = list(
cell_fill(color = "#FFFF00")
),
locations = cells_body(
columns = 3,
rows = match(i, emp.data_B$emp_id)
)
)
}
tbl_gt_B
}
})
output$table1 <- render_gt(
datasetInput1()
)
output$table2 <- render_gt(
datasetInput2()
)
}
)
解决方案
您可以添加条件标题文本。
library(shiny)
library(gt)
emp.data_A <- data.frame(
emp_id = c(1:5),
emp_name = c("Rick","Dan","Michelle","Ryan","Gary"),
salary = c(623.3,515.2,611.0,735.0,844.25),
credit = c(1,2,3,4,5))
emp.data_A
emp.data_B <- data.frame(
emp_id = c(1:5),
emp_name = c("Rick","Dan","Michelle","Ryan","Gary"),
salary = c(623.3,515.2,611.0,729.0,843.25))
emp.data_B
shinyApp(
ui = fluidPage(
fluidRow(
selectInput("dataset5",
"Choose a dataset:",
choices = c("SelectDataSet", "both", "emp.data_A", "emp.data_B")),
downloadButton("downloadData5", "Download")
),
hr(),
uiOutput('text'),
fluidRow(
column(width = 6, gt_output("table1")),
column(width = 6, gt_output("table2"))
)
),
server = function(input, output,session) {
datasetInput1 <- reactive({
if (input$dataset5 == "both" || input$dataset5 == "emp.data_A") {
emp.data_A
} else if (input$dataset5 == "emp.data_B") {
emp.data_B
}
})
datasetInput2 <- reactive({
if (input$dataset5 == "both") {
tbl_diffs <- dplyr::anti_join(emp.data_B, emp.data_A, by = c('emp_name', 'salary'))
tbl_gt_B <- emp.data_B %>% gt()
for (i in tbl_diffs$emp_id) {
tbl_gt_B <- tbl_gt_B %>%
tab_style(
style = list(
cell_fill(color = "#FFFF00")
),
locations = cells_body(
columns = 3,
rows = match(i, emp.data_B$emp_id)
)
)
}
tbl_gt_B
}
})
output$table1 <- render_gt(
datasetInput1()
)
output$table2 <- render_gt(
datasetInput2()
)
output$text <- renderUI({
if (input$dataset5 == "both")
h4("Comparision between emp A and emp B.", style = 'text-align: center;')
})
}
)
另一种选择是conditionalPanel
在 UI 中使用而不更改服务器中的任何内容。
conditionalPanel("input.dataset5 == 'both'",
h4("Comparision between emp A and emp B."),
style = 'text-align: center;')
推荐阅读
- python - 如何根据深度颜色将连接区域分割为python
- r - R用加入和离开时间绘制出席活动的图表
- javascript - 使用参数名称 (JavaScript) 从函数构造类
- asp.net-core - 从 ILogger Scope 读取状态值
- javascript - 在猫鼬模型中存储我已经向其发送消息的潜在教师的 ID 和数据
- flutter - 在 navigator.pop() 之后使用提供程序删除播放列表项
- javascript - MySQL自动撇号有什么想法吗?
- c - 可以更改 const char* 变量吗?
- php - 当我使用显示功能时,我的数据库的输出不会出现在页面中
- android - 使用 dagger hilt 为类注入依赖项