本文介绍了R Shiny:如何为observeEvent编写循环的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有以下代码.有什么办法可以像lapply这样在循环或矢量化语句中编写它?在我的真实代码中,我拥有更多的画笔,因此这将非常有用.谢谢.
I have the following code. Is there any way to write it in a loop or vectorized statement like lapply? In my real code, I have even more brushes so this will be pretty helpful. Thanks.
忽略此行.只需添加更多文本即可.
Ignore this line. Just need to add some more texts.
observeEvent(input$brush_1,{
Res=brushedPoints(D(),input$brush_1,allRows = TRUE)
vals$keeprows = Res$selected_
})
observeEvent(input$brush_2,{
Res=brushedPoints(D(),input$brush_2,allRows = TRUE)
vals$keeprows = Res$selected_
})
observeEvent(input$brush_3,{
Res=brushedPoints(D(),input$brush_3,allRows = TRUE)
vals$keeprows = Res$selected_
})
observeEvent(input$brush_4,{
Res=brushedPoints(D(),input$brush_4,allRows = TRUE)
vals$keeprows = Res$selected_
})
observeEvent(input$brush_5,{
Res=brushedPoints(D(),input$brush_5,allRows = TRUE)
vals$keeprows = Res$selected_
})
observeEvent(input$brush_6,{
Res=brushedPoints(D(),input$brush_6,allRows = TRUE)
vals$keeprows = Res$selected_
})
observeEvent(input$brush_7,{
Res=brushedPoints(D(),input$brush_7,allRows = TRUE)
vals$keeprows = Res$selected_
})
observeEvent(input$brush_8,{
Res=brushedPoints(D(),input$brush_8,allRows = TRUE)
vals$keeprows = Res$selected_
})
observeEvent(input$brush_9,{
Res=brushedPoints(D(),input$brush_9,allRows = TRUE)
vals$keeprows = Res$selected_
})
observeEvent(input$brush_10,{
Res=brushedPoints(D(),input$brush_10,allRows = TRUE)
vals$keeprows = Res$selected_
})
observeEvent(input$brush_11,{
Res=brushedPoints(D(),input$brush_11,allRows = TRUE)
vals$keeprows = Res$selected_
})
observeEvent(input$brush_12,{
Res=brushedPoints(D(),input$brush_12,allRows = TRUE)
vals$keeprows = Res$selected_
})
推荐答案
observeEvent
在lapply
中效果很好:
library("shiny")
ui <- fluidPage(
fluidRow(
column(
width = 6,
lapply(
X = 1:6,
FUN = function(i) {
sliderInput(inputId = paste0("d", i), label = i, min = 0, max = 10, value = i)
}
)
),
column(
width = 6,
verbatimTextOutput(outputId = "test")
)
)
)
server <- function(input, output){
vals <- reactiveValues()
lapply(
X = 1:6,
FUN = function(i){
observeEvent(input[[paste0("d", i)]], {
vals[[paste0("slider", i)]] <- input[[paste0("d", i)]]
})
}
)
output$test <- renderPrint({
reactiveValuesToList(vals)
})
}
shinyApp(ui = ui, server = server)
编辑:对于以前版本的Shiny,请在服务器中使用它(添加assign
):
EDIT : for previous version of shiny, use this in server (add assign
) :
lapply(
X = 1:6,
FUN = function(i){
assign(
paste0("obs", i),
observeEvent(input[[paste0("d", i)]], {
vals[[paste0("slider", i)]] <- input[[paste0("d", i)]]
})
)
}
)
这篇关于R Shiny:如何为observeEvent编写循环的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!