【发布时间】:2015-07-30 20:12:54
【问题描述】:
我正在制作一个应用程序,该应用程序从滑块获取输入以创建匹配数量的输入文本框。但是,当我从输入框中打印值时,它并不总是更新。
示例: 在滑块输入上选择 3。将1,2,3分别放入3个文本框中。点击提交。打印数字 = 1 数字 = 2 数字 = 3。当我将滑块移动到 2 并按 Enter 键时,我得到数字 = 1 数字 = 2,尽管文本输入中不再存在任何值。如果我将滑块移动到 4,我将得到输出编号 = NA 编号 = NA 编号 = 3 编号 = NA。
显然它会记住以前的输入值,但我不明白为什么或如何修复它。
ui.R
shinyUI(fluidPage(
fluidRow(
column(4, wellPanel(
sliderInput("numObs", "Number of observations", 1, 30, 3),
uiOutput("buttons"),
submitButton(text = "Apply Changes", icon = NULL)
)),
column(8,
textOutput("a")
)
) ))
server.R
shinyServer(function(input, output) {
output$buttons <- renderUI({
obs <- input$"numObs";
objs <-list();
for (i in 1:obs ){
objs <- list(objs, numericInput(inputId = paste0("t", i), "Day:", NA),br());
}
objs <- fluidRow(objs);
})
t<- function(){
for(i in 1:input$"numObs"){
if(i ==1){
t <- c(as.numeric(input[[paste0("t",i)]])[1]);
}
else{
t <- c(t,as.numeric(input[[paste0("t",i)]])[1]);
}
}
return(t);
}
output$a<- renderText({
paste("number = ", t());
})
})
【问题讨论】: