R 使用反应性添加多个变量
我想使用R中的action按钮一个接一个地添加变量。 例如,我想创建这样一个方程:Y=X1+X2+X3。但是,我必须通过一次添加一个单独的变量并按下一个操作按钮来实现这一点 步骤:R 使用反应性添加多个变量,r,shiny,reactive,R,Shiny,Reactive,我想使用R中的action按钮一个接一个地添加变量。 例如,我想创建这样一个方程:Y=X1+X2+X3。但是,我必须通过一次添加一个单独的变量并按下一个操作按钮来实现这一点 步骤: 选择相同且不会改变的因变量(Y) 选择一个自变量:(X1)并按计算。用户界面将显示Y=X1 如果我再次选择一个不同的自变量(X2)并按calculate,UI应该显示Y=X1+X2 如果进一步单击“操作”按钮,请继续此过程 假设只可能添加变量 library(shiny) library(shinydashb
计算
。用户界面将显示Y=X1
calculate
,UI应该显示Y=X1+X2
library(shiny)
library(shinydashboard)
ui <-
dashboardPage(
dashboardHeader(),
dashboardSidebar(
selectInput("dep_var", label = "dependent", choices = c('Y', 'Z'), selected = 'Y', multiple = F),
selectInput("ind_var", label = "Independent", choices = c('X1', 'X2', 'X3', 'X4'), selected = 'X1', multiple = F),
actionButton("add_equation", "Add equation"),
actionButton('clear', 'Clear equation')),
dashboardBody(uiOutput('equation'))
)
server <-function(input, output) {
x_var <- reactive({
x = paste0(input$ind_var)
x
})
observeEvent(input$add_equation, {
isolate(x_var())
})
observeEvent(input$clear, {
input$ind_var <- NULL
input$dep_var <- NULL
})
output$equation <- renderUI({
paste0(input$dep_var, '=', x_var())
})
}
shinyApp(ui, server)
库(闪亮)
图书馆(shinydashboard)
用户界面您不能修改用户输入变量输入$ind\u var
,和输入$dep\u var
。而是创建reactiveValues
对象并对其进行修改。试试这个
server <-function(input, output) {
y_var <- reactiveValues(eqn=NULL)
cntr <- reactiveVal(1)
observeEvent(input$add_equation, {
if (cntr()==1) {
cntr(2)
y_var$eqn <- paste0(input$ind_var)
}else {
cntr(cntr() + 1)
y_var$eqn <- paste0(y_var$eqn,' + ', input$ind_var)
}
})
observeEvent(input$clear, {
cntr(1)
y_var$eqn <- NULL
})
output$equation <- renderUI({
paste0(input$dep_var, '=', y_var$eqn)
})
}
服务器