如何将更新(刷新)按钮应用程序。R

0

的问题

我加入的按钮,但值将自动改变之前,我打"更新秩序",我不知道怎么修它。 应该是这样的:该图像描述这里下面是我的代码:

library(shiny)
ui <- fluidPage(
 titlePanel("My Simple App"),
 
 sidebarLayout(
   sidebarPanel(
     helpText("Controls for my app"),
     
     selectInput("fruitchoice", 
                 label = "Choose a fruit",
                 choices = list("Apples", 
                                "Oranges",
                                "Mangos", 
                                "Pomegranate"),
                 selected = "Percent White"),
     
     sliderInput("amt", 
                 label = "Order Amount:",
                 min=0, max = 100, value=20),
     
     actionButton ("Update","Update Order")
   ),
   
   mainPanel(
     helpText("Fruit Chosen:"),
     verbatimTextOutput("fruit"),
     helpText("Order Amount"),
     verbatimTextOutput("amt")
   )
 )
)

# Define server logic required to draw a histogram
server <- function(input, output) {

   SelectInput <- eventReactive (input$Update , {
   runif(input$fruitchoice,amt)
  })
   output$fruit = renderText(input$fruitchoice)
   output$amt = renderText(input$amt)
}
# Run the application 
shinyApp(ui = ui, server = server)
r shiny
2021-11-24 05:38:40
2
0

我会告诉你,怎么重写代码,以获取这一更新的行为,但是我也要让你知道,这一部分代码:

SelectInput <- eventReactive (input$Update , {
   runif(input$fruitchoice,amt)
  })

是错误的原因有三:(1)对象 amt 不存在,您可能想要 input$amt;(2)即使如果改变 amtinput$amt 代码不会的工作,你会得到错误;(3)现在,你是不是用 SelectInput 在任何地方在应用程序,所以没有任何理由为这一部分存在,但是因为我不知道什么是你的目标,并将如何看待最终的应用程序,我不是说这通常是错误的。

好了,现在更新关于这个按钮。 我们将重点放在这个代号:

output$fruit = renderText(input$fruitchoice)
   output$amt = renderText(input$amt)

在这里,你指示的程序(重新)呈现文本的时候 input$fruitchoice 或者(在第二行)的时候 input$amt 改变,但希望(重新)呈现文本,只有当用户的点击按钮,所以你需要的两件事第一,以确保用户点击按钮,不(重新)呈现文本时的一个 input$ 改变。 这将工作:

output$fruit = renderText({
    req(input$Update)
    isolate(input$fruitchoice)
    })
  output$amt = renderText({
    req(input$Update)
    isolate(input$amt)
    })

如果我的理解闪亮的正确, isolate() 确保案文不是(重新)呈现时, input$ 修改(但是它内部的新的价值)并且 req() 使得确保 input$Update 是点击;和当被点击次,闪闪发亮重新计算[(重新)使]的案文。 它重新计算,因为我们没有使用 isolate()input$Update 我认为。

2021-11-24 09:37:42
0

有几件事错在你的代码。 我会给一点的解释每一:

你是初始化与反应性的投入。 通过使用 renderText(input$...) 你创建的一种案文输出,更新时,自动输入的更新。 自动的问题在这里,你不希望出现这种情况。 我们要写一个替代方法,该方法存在输入一个独立的变量,我们只允许进行更新时按钮被按下。 我们的初始化,变量,像这样:

rv <- reactiveValues(fruit = "Apples",
                       amt = 20)

EventReactive 创建一个反应性变量以后可以使用的代码。 一般来说你想要什么以使用这些类型的情况是 observeEvent. 你可以像这样:

observeEvent (input$Update , {
    rv$fruit <- input$fruitchoice
    rv$amt <- input$amt
  })

我们现在有一个列表中的变量名称下"rv"和一个 observeEvent 更新这个变量,每次按钮被按下。 所有剩下要做的是创建 renderText 你可以做像这样:

output$fruit <- renderText(rv$fruit)
output$amt <- renderText(rv$amt)
2021-11-24 10:22:43

不是它的错误行为的投入 render* 内部 observereactive? I.e。 一般筑巢的积极反应?
gss

我猜测它是不理想。 我会更新的完整的观察/reactiveVal答案
Wietse de Vries

其他语言

此页面有其他语言版本

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................