R 闪亮:创建UI关联动态列表

R 闪亮:创建UI关联动态列表,r,shiny,R,Shiny,使用shinny可以很容易地创建n输入,方法是创建这样的UI列表(我使用..来节省空间): 使用eval/parse将以前的输入用作参数似乎失败了 我的下一个想法是尝试将其添加到原始代码中: observe({ if (input$count>1) { for (i in 2:input$count) { updateNumericInput(paste0("numId",i),min=eval(parse(text=paste0("input$numId",i-1)))) }}}) 这

使用
shinny
可以很容易地创建
n
输入,方法是创建这样的UI列表(我使用
..
来节省空间):

使用
eval/parse
将以前的输入用作参数似乎失败了

我的下一个想法是尝试将其添加到原始代码中:

observe({
if (input$count>1) {
for (i in 2:input$count) {
updateNumericInput(paste0("numId",i),min=eval(parse(text=paste0("input$numId",i-1))))
}}})
这里的问题是,当更新
numId
时,observe不知道如何响应,因为
input$numIdx
中的任何对象实际上都不在
observe
语句中,只有在运行observe时转换为这些对象的字符串

有没有办法处理这个问题?如果能够生成
n
输入,并使它们动态地相互关联,那就太好了


关于

我只是快速浏览了你的问题,所以这可能不是你想要的,但是如果你想在numId更改时运行observe中的代码,你可以添加一行
input$numId
。您不必使用它来计算任何值或执行任何赋值或任何操作,您只需让它自己成为一整行,这将导致观察者在创建
ui
元素时依赖于该被动值。您不也要设置值吗?当您为所有人执行此操作时,您将面临的问题是,他们都将首先查看滑块,然后更新值
output$test <- renderUI({
    lapply(1:input$count, function(x) 
        if (x==1) numericInput(paste0('numId',x),...))
        else numericInput(paste0('numId',x),min=eval(parse(text=paste0("input$numId",x-1))),...))
})
observe({
if (input$count>1) {
for (i in 2:input$count) {
updateNumericInput(paste0("numId",i),min=eval(parse(text=paste0("input$numId",i-1))))
}}})