如何在R Shiny中将输出$ sufix名称的后缀合并到input $ sufix_rows_selected函数中?

问题描述 投票:0回答:1

我正在尝试在R Shiny中获得output$sufix名称的后缀,并将其合并到input$sufix_rows_selected函数中。向下钻取表将为空。有人会知道我在做什么错吗?

我正在尝试构建的功能:

f.drilldata <- function(base.summary, base.drilldown,  sufix.output, group_var){ 

group = enquo(group_var)
base.summary = base.summary %>% mutate(var = !!group)
base.drilldown = base.drilldown %>% mutate(var = !!group)

#input = expr(!!glue("input${sufix.output}_rows_selected"))
input = paste0(sufix.output,'_rows_selected')

validate(need(length(input[[input]]) > 0, ''))
selected_rows <- base.summary[as.integer(input[[input]]), ]$var

base.drilldown[base.drilldown$var %in% selected_rows, ]
}
错误示例:
library("dplyr")
library("shiny")
library("DT")

tbl.summary <- group_by(iris, Species) %>% summarise(Count = n())
tbl.drilldown <- iris

ui <- fluidPage(
DTOutput("output.summary.name")
, DTOutput("output.drilldown.name"))

server <- function(input, output){

# display the data that is available to be drilled down
output$output.summary.name <- renderDT(tbl.summary)

# subset the records to the row that was clicked through f.drilldata function
drilldata <- reactive({ f.drilldata(tbl.summary, tbl.drilldown, 'output.summary.name', Species)  })

# display the subsetted data
output$output.drilldown.name <- renderDT(drilldata())}

shinyApp(ui, server)
有效但f.drilldata函数不起作用的示例
library("dplyr")
library("shiny")
library("DT")

tbl.summary <- group_by(iris, Species) %>% summarise(Count = n())
tbl.drilldown <- iris

ui <- fluidPage(
DTOutput("output.summary.name")
, DTOutput("output.drilldown.name"))


server <- function(input, output){

output$output.summary.name <- renderDT(tbl.summary)

drilldata <- reactive({ validate( need(length(input$output.summary.name_rows_selected) > 0, "Select rows to drill down!")) 
selected_species <- 
tbl.summary[as.integer(input$output.summary.name_rows_selected), ]$Species
tbl.drilldown[tbl.drilldown$Species %in% selected_species, ]  })

output$output.drilldown.name <- renderDT(drilldata())}

shinyApp(ui, server)
r shiny dt drilldown quosure
1个回答
0
投票

我发现了一个简单的解决方案,只需将整个输入(input $ output.summary.name_rows_selected)添加为函数的参数,如下所示。

© www.soinside.com 2019 - 2024. All rights reserved.