使用输入定义迭代
Using input to define iterations
我想定义 lapply
应该在 R-shiny 中交互进行的迭代次数。
到目前为止,将这个数字投入使用,同样会生成一个输出。
渲染这些输出也可以,但是迭代次数不行。
目前的代码如下所示:
ui<-fluidPage(
numericInput(inputId = "maxk", label = "number of k's", value=5),
actionButton(inputId="start",label="Start"),
maxk<-5,
#Instead of this (maxk<-5), I would like write something to get maxk from the output
lapply(1:maxk,function(k){
list(
uiOutput(paste("test_",k))
)
})
)
server <- function(input, output, session){
observeEvent(input$start,{
maxk<-input$maxk
#And here something should be apply to get maxk into the correct way into the output I assume
lapply(1:maxk,function(k){
output[[paste("test_",k)]]<-renderText(k)
})
})
}
shinyApp(ui = ui, server = server)
我已尝试 RenderText()
,但如果我尝试将其用作 lapply()
的输入,则会出现错误。
还有哪些其他可能性可以在服务器部分中获得可用于 ui 部分的数字输出?
我认为这应该可以满足您的需求。最终,你的 Shiny 代码越短越好! (也就是说,我确信有人可以找到更短的方法,但这行得通。)
ui <- fluidPage(
numericInput(
inputId = "maxk",
label = "number of k's",
value = 5
),
verbatimTextOutput("k_output")
)
server <- function(input, output){
calc <- reactive({
lapply(
1:input$maxk,
function(k){
paste0("test_", k)
}
)
})
output$k_output <- renderPrint(calc())
}
shinyApp(ui = ui, server = server)
希望对你有所帮助。
我想定义 lapply
应该在 R-shiny 中交互进行的迭代次数。
到目前为止,将这个数字投入使用,同样会生成一个输出。
渲染这些输出也可以,但是迭代次数不行。
目前的代码如下所示:
ui<-fluidPage(
numericInput(inputId = "maxk", label = "number of k's", value=5),
actionButton(inputId="start",label="Start"),
maxk<-5,
#Instead of this (maxk<-5), I would like write something to get maxk from the output
lapply(1:maxk,function(k){
list(
uiOutput(paste("test_",k))
)
})
)
server <- function(input, output, session){
observeEvent(input$start,{
maxk<-input$maxk
#And here something should be apply to get maxk into the correct way into the output I assume
lapply(1:maxk,function(k){
output[[paste("test_",k)]]<-renderText(k)
})
})
}
shinyApp(ui = ui, server = server)
我已尝试 RenderText()
,但如果我尝试将其用作 lapply()
的输入,则会出现错误。
还有哪些其他可能性可以在服务器部分中获得可用于 ui 部分的数字输出?
我认为这应该可以满足您的需求。最终,你的 Shiny 代码越短越好! (也就是说,我确信有人可以找到更短的方法,但这行得通。)
ui <- fluidPage(
numericInput(
inputId = "maxk",
label = "number of k's",
value = 5
),
verbatimTextOutput("k_output")
)
server <- function(input, output){
calc <- reactive({
lapply(
1:input$maxk,
function(k){
paste0("test_", k)
}
)
})
output$k_output <- renderPrint(calc())
}
shinyApp(ui = ui, server = server)
希望对你有所帮助。