2016-12-24 72 views
0

我在R Shiny中有一个简单的server/ui程序。随着我已经创建了-lpply -lets说 - 10个textInputs。动态地输入textinput元素的输入ID

输入的名称是marker1 marker2 marker3等等。预定义的值(没有空的)。我创建了一个observeEvent来检查用户何时按下在UI中创建的Submit按钮,以便我可以操纵新值。

当我做

 print(input$marker1) 

它工作得很好,它显示了特定标记物的价值。

的问题是,我想对所有的标记和它们的数量不是一成不变的做到这一点,所以我想出了这个想法,这不工作:

 for(i in length(markers)) 
    { 
     markername = paste0("marker",i); 
     print(input$markername) 
    } 

我理解其背后的逻辑这是错误的,因为在输入$之后,您需要输入实际的输入名称,但当我的标记数量为动态时,如何才能做到这一点?

编辑#1和更新:

环视输入格式后,我发现这一个,实际上让你粘贴输入的名称:

 input[[paste0("name",i)]] 

所以,现在的问题是像这样的东西。

 for(i in length(markers)) 
    { 
     global_var[i] <<- input[[paste0("name",i)]] 
    } 
    print(global_var) 

现在的问题是,我得到NULL为global_var对象的第一个位置,除了最后一个分配正确完成。

回答

0

我遇到的问题是如何设置我想动态显示的输入名称。正如上面所看到的,我尝试了不同的东西,但现在我已经提出了整个解决方案,同时也为您提供(如果需要)列表中所述“分组”输入的值。

我使用了一个全局变量(因为我想使用其他输出值也一样)命名newNames并初始化它在开始的时候为NULL,其余代码如下所示,它的一个简单lapply:

 lapply(1:length(markers), function(i) 
     { 
     newNames[i] <<- input[[paste0("marker", i)]] 
     }) 
     printf(newNames)