动态用户界面访问数据(闪亮)

时间:2015-05-18 14:10:22

标签: r dynamic shiny

我的闪亮代码存在问题,这与我在下面链接的两个问题有些相关。

所以我做了一个动态的用户界面:

output$hmgroupsmean <-renderUI({
numGroups <- as.integer(input$HMgroups)

lapply(1:numGroups, function(i) {

  numericInput(paste0("group_", i),
               label= paste("Mean", i),
               min=0, 
               max=1000,
               value= 10)
})
}) 

显示N numericInput,具体取决于用户选择的组数。 然后我只想检索所有的意思,然后开始出现问题: 我尝试了解释here的内容,但它不起作用:

   output$PowerAnalysisANOVA <- renderPlot({

   allmean = c()

   lapply(1:numGroups, function(i){
     allmean[i] <- input[[paste0("group_", i)]]
   }) 

qplot(allname)

})

它返回: 错误:参数&#34; env&#34;缺少,没有默认

然后我尝试了一些更具异国情调的东西:

 output$PowerAnalysisANOVA <- renderPlot({

   allname = c()
   allmean = c()
   lapply(1:numGroups, function(i){
     allname[i] <- paste0("input$group_" ,i)
     allmean[i] <- get(allname[i])
   }) 

qplot(allmean)
})

但它不起作用:错误:对象&#39;输入$ group_1&#39;找不到

在AndriyTkach的评论之后编辑:

output$PowerAnalysisANOVA <- renderPlot({

   allname = c()
   allmean = c()
   lapply(1:numGroups, function(i){
     allname[i] <- eval(parse (text = paste0("input$group_" ,i))) 
     allmean[i] <- get(allname[i])
   }) 

qplot(allmean)
})

它返回一个新的错误:第一个参数无效

AndriyTkach建议:

for (i in 1:numGroups) 
eval (parse (text = paste0("allmean[", i, "] <- input$group_" ,i))) 

哪项工作好多了:没有错误信息,但它只适用于2组和3组,第四组和以上组都没有考虑在内 Create dynamic number of input elements with R/Shiny accessing inputs created in renderUI in Shiny

1 个答案:

答案 0 :(得分:0)

在与AndriyTkach讨论之后:我有一个工作计划:

output$PowerAnalysisANOVA <- renderPlot({
allmean = c()

for (i in 1:values$numGroups) 
eval (parse (text = paste0("allmean[", i, "] <- input$group_" ,i))) 

qplot(allmean)
})

我忘记制作一个反应变量:

values <- reactiveValues()

output$hmgroupsmean <-renderUI({
values$numGroups <- as.integer(input$HMgroups)
apply(1:values$numGroups, function(i) {

  numericInput(paste0("group_", i),
               label= paste("Condition", i),
               min=0, 
               max=1000,
               value= 10)
})
})