在 flexdashboard 中离开 submitButton 时如何使用 actionButton?
How to use actionButton when leaving submitButton in flexdashboard?
我希望在我按下按钮时计算 renderValueBox
,而不是自动计算。
我尝试使用 actionButton
,但没有成功。我也无法使用 flexdashboard
中的 submitButton
函数,但它也不起作用。
我只想使用 Shiny::actionButton
函数(文档推荐)来执行此操作。我的代码:
---
title: "Sum"
runtime: shiny
output:
flexdashboard::flex_dashboard:
orientation: rows
vertical_layout: fill
theme: yeti
---
side{.sidebar}
-------------------------------------------
```{r}
library(tibble)
library(shiny)
library(shinyWidgets)
library(flexdashboard)
library(scales)
```
**Análise**
```{r}
autonumericInput(
inputId = "a",
value = 0,
label = "Value 1",
align = "center",
currencySymbol = "R$",
currencySymbolPlacement = "p",
decimalPlaces = 2,
digitGroupSeparator = ".",
decimalCharacter = ","
)
autonumericInput(
inputId = "b",
value = 0,
label = "Value 2",
align = "center",
currencySymbol = "R$",
currencySymbolPlacement = "p",
decimalPlaces = 2,
digitGroupSeparator = ".",
decimalCharacter = ","
)
actionButton("execute", "Calcule")
```
```{r}
f_1 <- function(a, b) {
a + b
}
```
```{r}
reac <- eventReactive(input$execute, {
x = tibble(
a = input$a,
b = input$b
)
}, ignoreNULL = FALSE)
pred <- reactive({
temp <- reac()
f_1(
a = input$a,
b = input$b
)
})
```
abc{}
--------------------------------------
###
```{r}
renderValueBox({
valueBox(
value = scales::dollar(x = round(x = pred(), digits = 4), prefix = "$ ", suffix = " dollar(s)", big.mark = ",", decimal.mark = "."),
caption = "Sum",
color = "steelblue",
icon = "fa-plus"
)
})
```
---
title: "Sum"
runtime: shiny
output:
flexdashboard::flex_dashboard:
orientation: rows
vertical_layout: fill
theme: yeti
---
side{.sidebar}
-------------------------------------------
```{r}
library(tibble)
library(shiny)
library(shinyWidgets)
library(flexdashboard)
library(scales)
```
**Análise**
```{r}
autonumericInput(
inputId = "a",
value = 0,
label = "Value 1",
align = "center",
currencySymbol = "R$",
currencySymbolPlacement = "p",
decimalPlaces = 2,
digitGroupSeparator = ".",
decimalCharacter = ","
)
autonumericInput(
inputId = "b",
value = 0,
label = "Value 2",
align = "center",
currencySymbol = "R$",
currencySymbolPlacement = "p",
decimalPlaces = 2,
digitGroupSeparator = ".",
decimalCharacter = ","
)
actionButton("execute", "Calcule")
```
abc{}
--------------------------------------
###
```{r}
renderValueBox({
req(input$execute)
valueBox(
value = scales::dollar(x = round(x = isolate(input$a) + isolate(input$b), digits = 4), prefix = "$ ", suffix = " dollar(s)", big.mark = ",", decimal.mark = "."),
caption = "Sum",
color = "steelblue",
icon = "fa-plus"
)
})
```
这里的技巧是使用 isolate()
包装您的输入,因此这些输入不会触发框的更新并添加 req(input$execute)
来触发更新。
我希望在我按下按钮时计算 renderValueBox
,而不是自动计算。
我尝试使用 actionButton
,但没有成功。我也无法使用 flexdashboard
中的 submitButton
函数,但它也不起作用。
我只想使用 Shiny::actionButton
函数(文档推荐)来执行此操作。我的代码:
---
title: "Sum"
runtime: shiny
output:
flexdashboard::flex_dashboard:
orientation: rows
vertical_layout: fill
theme: yeti
---
side{.sidebar}
-------------------------------------------
```{r}
library(tibble)
library(shiny)
library(shinyWidgets)
library(flexdashboard)
library(scales)
```
**Análise**
```{r}
autonumericInput(
inputId = "a",
value = 0,
label = "Value 1",
align = "center",
currencySymbol = "R$",
currencySymbolPlacement = "p",
decimalPlaces = 2,
digitGroupSeparator = ".",
decimalCharacter = ","
)
autonumericInput(
inputId = "b",
value = 0,
label = "Value 2",
align = "center",
currencySymbol = "R$",
currencySymbolPlacement = "p",
decimalPlaces = 2,
digitGroupSeparator = ".",
decimalCharacter = ","
)
actionButton("execute", "Calcule")
```
```{r}
f_1 <- function(a, b) {
a + b
}
```
```{r}
reac <- eventReactive(input$execute, {
x = tibble(
a = input$a,
b = input$b
)
}, ignoreNULL = FALSE)
pred <- reactive({
temp <- reac()
f_1(
a = input$a,
b = input$b
)
})
```
abc{}
--------------------------------------
###
```{r}
renderValueBox({
valueBox(
value = scales::dollar(x = round(x = pred(), digits = 4), prefix = "$ ", suffix = " dollar(s)", big.mark = ",", decimal.mark = "."),
caption = "Sum",
color = "steelblue",
icon = "fa-plus"
)
})
```
---
title: "Sum"
runtime: shiny
output:
flexdashboard::flex_dashboard:
orientation: rows
vertical_layout: fill
theme: yeti
---
side{.sidebar}
-------------------------------------------
```{r}
library(tibble)
library(shiny)
library(shinyWidgets)
library(flexdashboard)
library(scales)
```
**Análise**
```{r}
autonumericInput(
inputId = "a",
value = 0,
label = "Value 1",
align = "center",
currencySymbol = "R$",
currencySymbolPlacement = "p",
decimalPlaces = 2,
digitGroupSeparator = ".",
decimalCharacter = ","
)
autonumericInput(
inputId = "b",
value = 0,
label = "Value 2",
align = "center",
currencySymbol = "R$",
currencySymbolPlacement = "p",
decimalPlaces = 2,
digitGroupSeparator = ".",
decimalCharacter = ","
)
actionButton("execute", "Calcule")
```
abc{}
--------------------------------------
###
```{r}
renderValueBox({
req(input$execute)
valueBox(
value = scales::dollar(x = round(x = isolate(input$a) + isolate(input$b), digits = 4), prefix = "$ ", suffix = " dollar(s)", big.mark = ",", decimal.mark = "."),
caption = "Sum",
color = "steelblue",
icon = "fa-plus"
)
})
```
这里的技巧是使用 isolate()
包装您的输入,因此这些输入不会触发框的更新并添加 req(input$execute)
来触发更新。