R闪亮-尝试使用反应和动作按钮循环
我的闪亮应用程序中有10个动作按钮。我试图创建一个循环,但我遇到了反应值的问题。我该怎么解决呢 以下是按钮1的代码:R闪亮-尝试使用反应和动作按钮循环,r,loops,shiny,reactive,R,Loops,Shiny,Reactive,我的闪亮应用程序中有10个动作按钮。我试图创建一个循环,但我遇到了反应值的问题。我该怎么解决呢 以下是按钮1的代码: server <- function(input, output, session) { value1 <- reactiveVal(0) observeEvent(input$minus1, {newValue1 <- value1() - 1) value1(newValue1)}) observeEvent(inp
server <- function(input, output, session)
{
value1 <- reactiveVal(0)
observeEvent(input$minus1, {newValue1 <- value1() - 1)
value1(newValue1)})
observeEvent(input$plus1, {newValue1 <- (value1() + 1)
value1(newValue1)})
output$value1 <- renderUI(actionBttn("result1", label = value1()))
}
server我过去曾基于以下内容制作过类似的演示:
这将生成10个加号和10个减号按钮,每个按钮将增加或减少反应值。我希望这可能会有所帮助
library(shiny)
library(dplyr)
ui <- fluidPage(
fluidRow(uiOutput("show_table"))
)
server <- function(input, output, session) {
Data <- reactiveValues(
Info = rep(0, 10)
)
observe({
input_btn_p <- paste0("btn_p_", 1:10)
lapply(input_btn_p, function(x){
observeEvent(input[[x]], {
i <- as.numeric(sub("btn_p_", "", x))
Data$Info[i] <- Data$Info[i] + 1
})
})
input_btn_m <- paste0("btn_m_", 1:10)
lapply(input_btn_m, function(x){
observeEvent(input[[x]], {
i <- as.numeric(sub("btn_m_", "", x))
Data$Info[i] <- Data$Info[i] - 1
})
})
})
display_table <- reactive({
data.frame(value = Data$Info) %>%
mutate(button1 = vapply(row_number(),
function(i){
actionButton(inputId = paste0("btn_p_", i), label = "Plus") %>%
as.character()
},
character(1)),
button2 = vapply(row_number(),
function(i){
actionButton(inputId = paste0("btn_m_", i), label = "Minus") %>%
as.character()
},
character(1)))
})
output$show_table <- renderUI({
display_table() %>%
select(value, button1, button2) %>%
knitr::kable(format = "html", escape = FALSE) %>%
HTML()
})
}
shinyApp(ui, server)
库(闪亮)
图书馆(dplyr)
ui您好,您应该看看,它们降低了在输入名称之间丢失的风险,并且有助于创建循环。对于
循环,请使用lappy
以编程方式启动observeEvent
s。比如,lappy(1:10,函数(i){……})
非常感谢!工作完美。
library(shiny)
library(dplyr)
ui <- fluidPage(
fluidRow(uiOutput("show_table"))
)
server <- function(input, output, session) {
Data <- reactiveValues(
Info = rep(0, 10)
)
observe({
input_btn_p <- paste0("btn_p_", 1:10)
lapply(input_btn_p, function(x){
observeEvent(input[[x]], {
i <- as.numeric(sub("btn_p_", "", x))
Data$Info[i] <- Data$Info[i] + 1
})
})
input_btn_m <- paste0("btn_m_", 1:10)
lapply(input_btn_m, function(x){
observeEvent(input[[x]], {
i <- as.numeric(sub("btn_m_", "", x))
Data$Info[i] <- Data$Info[i] - 1
})
})
})
display_table <- reactive({
data.frame(value = Data$Info) %>%
mutate(button1 = vapply(row_number(),
function(i){
actionButton(inputId = paste0("btn_p_", i), label = "Plus") %>%
as.character()
},
character(1)),
button2 = vapply(row_number(),
function(i){
actionButton(inputId = paste0("btn_m_", i), label = "Minus") %>%
as.character()
},
character(1)))
})
output$show_table <- renderUI({
display_table() %>%
select(value, button1, button2) %>%
knitr::kable(format = "html", escape = FALSE) %>%
HTML()
})
}
shinyApp(ui, server)