将selectInput值从UI动态传递到R中的服务器代码
R脚本中服务器中的process_map()函数创建下图。我的要求是performance()函数中有两个属性“FUN”和“units”。它们有四个标准值,每个值在下面的用户界面代码中的PickerInput ID的Case4和Case5下可用。目前,我正在对值进行硬编码以创建映射,您能否帮助我在服务器代码中使用id并使其动态化,以便我在PickerInput中选择值时,公式直接获取值。谢谢,请帮忙将selectInput值从UI动态传递到R中的服务器代码,r,shiny,shinydashboard,diagrammer,R,Shiny,Shinydashboard,Diagrammer,R脚本中服务器中的process_map()函数创建下图。我的要求是performance()函数中有两个属性“FUN”和“units”。它们有四个标准值,每个值在下面的用户界面代码中的PickerInput ID的Case4和Case5下可用。目前,我正在对值进行硬编码以创建映射,您能否帮助我在服务器代码中使用id并使其动态化,以便我在PickerInput中选择值时,公式直接获取值。谢谢,请帮忙 library(shiny) library(shinydashboard) library(b
library(shiny)
library(shinydashboard)
library(bupaR)
library(processmapR)
library(lubridate)
library(dplyr)
library(edeaR)
library(shinyWidgets)
library(DiagrammeR)
ui <- dashboardPage(
dashboardHeader(title = "Diagram Plot",titleWidth = 290),
dashboardSidebar(width = 0),
dashboardBody(
tabsetPanel(type = "tab",
tabPanel("Overview", value = 1,
box(
column(1,
dropdown(
pickerInput(inputId = "resources",
label = "",
choices = c("Throughput Time"),
choicesOpt = list(icon = c("fa fa-bars",
"fa fa-bars",
"fa fa-safari")),
options = list(`icon-base` = "")),
circle = FALSE, status = "primary", icon = icon("list", lib = "glyphicon"), width = "300px"
),
conditionalPanel(
condition = "input.resources == 'Throughput Time' ",
tags$br(),
tags$br(),
tags$br(),
dropdown(
pickerInput(inputId = "Case4",
label = "Select the Process Time Summary Unit",
choices = c("min","max","mean","median"), options = list(`actions-box` = TRUE),
multiple = F),
circle = FALSE, status = "primary", icon = icon("eye-close", lib = "glyphicon"), width = "300px"
),
tags$br(),
tags$br(),
tags$br(),
dropdown(
pickerInput(inputId = "Case5",
label = "Select the Process Time Unit",
choices = c("mins","hours","days","weeks"), options = list(`actions-box` = TRUE),
multiple = F, selected = "days"),
circle = FALSE, status = "primary", icon = icon("eye-close", lib = "glyphicon"), width = "300px"
))),
title = "Process Map",
status = "primary",height = "575", width = "500",
solidHeader = T,
column(10,grVizOutput("State")),
align = "left")
),
id= "tabselected"
)))
server <- function(input, output) {
output$State <- renderDiagrammeR(
{
if(input$resources == "Throughput Time")
patients %>% process_map(performance(FUN = mean,units = "days"))
else
return()
})}
shinyApp(ui, server)
库(闪亮)
图书馆(shinydashboard)
图书馆(bupaR)
库(processmapR)
图书馆(lubridate)
图书馆(dplyr)
图书馆(edeaR)
图书馆(shinyWidgets)
图书馆(图解机)
ui测试这个:
output$State <- renderDiagrammeR({
if(input$resources == "Throughput Time")
{
if(input$Case4=="mean"){
patients %>% process_map(performance(FUN = mean,units = input$Case5))}
else if(input$case4=="min"){
patients %>% process_map(performance(FUN = min,units = input$Case5))
}else if(input$case4=="max"){
patients %>% process_map(performance(FUN = max ,units = input$Case5))
}else{
patients %>% process_map(performance(FUN = median ,units = input$Case5))
}
}else
return()
})
享受;)
以下是一个示例:
library(shiny)
ui <- fluidPage(
selectInput(inputId = "func", label = "Choose The Function", choices = c("mean", "sum", "median"))
,
textOutput("text")
)
server <- function(input, output, session) {
main_data <- reactive({
data.frame(a= rnorm(100), b=rnorm(100) )
})
output$text <- renderText({
df <- main_data()
apply(df,2, FUN = eval(parse(text=input$func)) )
})
}
shinyApp(ui = ui, server = server)
库(闪亮)
ui您可以使用do.call
从函数名调用函数,请参见下面的示例。您可以通过将参数添加到do.call
函数的列表中来添加参数,例如list(x,units=input$Case5)
库(闪亮)
x=c(1,2,3,4,5,6,7)
ui您好,感谢您的回复,我收到一个错误“参数的长度为零”,请在这里帮助我,为什么我不能使有趣的变量成为动态的?如果您正确计算了所有内容(例如:患者),请运行它,并测试它。您可以使用切换功能,或者这样,我只知道这两种方法您的解决方案是完全正确的,但我的观点是减少if的使用,使其变得清晰和动态,我可以使用闪亮的输入ID,它在您的系统中运行良好吗?您可以测试切换功能(链接上方)要查看它是否会改变代码的性能性能不是我的问题,我想以某种方式在process map函数中使用输入ID?感谢您的帮助,关于您的“paste0”命令,如果您可以替换它并测试此命令,请患者%>%process_map(性能(FUN=result,units=“days”))。您还需要renderDiagrammeR和grvizOutput来调用该图,我在这里需要帮助。谢谢
library(shiny)
ui <- fluidPage(
selectInput(inputId = "func", label = "Choose The Function", choices = c("mean", "sum", "median"))
,
textOutput("text")
)
server <- function(input, output, session) {
main_data <- reactive({
data.frame(a= rnorm(100), b=rnorm(100) )
})
output$text <- renderText({
df <- main_data()
apply(df,2, FUN = eval(parse(text=input$func)) )
})
}
shinyApp(ui = ui, server = server)
library(shiny)
x=c(1,2,3,4,5,6,7)
ui <- fluidPage(
selectInput('select','Select Function: ', choices=c('mean','max','min','median')),
textOutput('text')
)
server <- function(input,output)
{
output$text <- renderText({
result = do.call(input$select, list(x))
paste0('The ', input$select, ' of [', paste(x,collapse=', '),'] is ', result)
})
}
shinyApp(ui,server)