如何在Shiny应用程序中的两个变量上使用lapply?

时间:2018-10-02 21:40:41

标签: r shiny lapply observers

我有以下代码段:

  observeEvent(subsettedData(), {
    lapply(col_names, function(var) {
      selections <- unique(subsettedData()[[var]])
      if (length(input[[var]]) == 0)
        updateSelectInput(session = session, inputId = var, choices = selections)
    })
  }) 

我想对其进行重新设计,以纳入inputId与子集数据中的列名不同的事实。

代替上面的代码在col_names上应用,我尝试通过2个变量以这种方式应用它:

  observeEvent(subsettedData(), {
    lapply(col_names, col_aliases, function(cn, an) {
      selections <- unique(subsettedData()[[cn]])
      if (length(input[[cn]]) == 0)
        updateSelectInput(session, inputId = an, choices = selections)
    })
  }) 

但是,它不起作用。

1 个答案:

答案 0 :(得分:1)

我认为您正在寻找mapply()

observeEvent(subsettedData(), {
    mapply(FUN = function(cn, an) {
      selections <- unique(subsettedData()[[cn]])
      if (length(input[[cn]]) == 0)
        updateSelectInput(session, inputId = an, choices = selections)
    }, cn = col_names, an = col_aliases)
  }) 

(未经测试,因为代码不可复制,...)