在paste0中使用'input $ entry'进行可变长度输入[1:n]

时间:2016-02-17 23:44:12

标签: r shiny

我在server.R方面有一个笨重的代码块,我觉得R语法应该允许我创建一两行,同时更灵活地使用某种lapply或do.call行

    if(input$parVary == "area" && as.numeric(input$nTraces) > 3 )
    {
        area <- c(input$area, input$area2, input$area3, input$area4)
    } else if(input$parVary == "area" && as.numeric(input$nTraces) > 2 )
    {
        area <- c(input$area, input$area2, input$area3)
    } else if(input$parVary == "area" && as.numeric(input$nTraces) > 1 )
    {
        area <- c(input$area, input$area2)
    } else
    {
        area <- input$area
    }

但是我花了一天时间和大约十亿种不同的lapply,do.calls,reactive,get,c和观察组合

    paste0('input$area', 1:as.numeric(input$nTraces))

我似乎无法找到正确的组合或找出我所缺少的反应性概念。它似乎与代码有关,不包括单个输入$ area1,输入$ area2等等......代码中任何地方的显式文本?

1 个答案:

答案 0 :(得分:0)

我在上面的评论中说得太早了。我的特定代码最终需要条件来处理列表与单值的情况。但@NicE答案是我一直在寻找的答案。像

这样的五个部分
  Genkai.ListControleMachine.Remove(Genkai.ListControleMachine.Where(X => X.ComputerName == "M57095").Single());

与后来合作

    if(input$parVary == "area" && as.numeric(input$nTraces) > 1 )
    {
        area <- lapply(paste0("area",1:as.numeric(input$nTraces)),function(x) input[[x]])
    } else
    {
        area <- input$area1
    }

得到我想要的东西。