r语言 - 创建一个通用函数,从数据框架中选定的列列表生成新对象



我正在开发一个简单的ShinyApp,它将使最终用户能够使用各种过滤器来查询数据。一些过滤器对应于数据框架列中的唯一值,这些列是使用以下示例对应的代码创建的:

# Source sample data
data(mtcars)
# Put together menu element
mtcars$cyl <- as.character(mtcars$cyl)
ui_list_cyl <- unique(mtcars$cyl)

随后将以这种方式创建的元素引入Shiny下拉小部件,如下面的代码所示:

# Sample widget elements that provides access to unique column values
selectInput("select", label = h3("Select box"), 
    choices = ui_list_cyl, 
    selected = 1),

我对许多列重复了相同的过程,创建一个函数来满足这个要求似乎是一个自然的选择。特别地,我将设想函数为:

  1. 适用于我传递给它的一组列
  2. 创建接口元素名称对应的对象ui_list_originalCOLUMname

我的问题是:如何创建一个可以动态应用于数据框架中任意选择的列的函数,并将返回包含传入列名的名称的对象?

有几种方法可以编写所需的函数。下面是这样一个函数的示例,它接受一个数据集和一个列名,并创建关联的select输入。

mySelectInput <- function(data, col) {
  id <- sprintf("select_%s", col)
  label <- sprintf("Select %s", col)
  choices <- sort(unique(data[[col]]))
  selectInput(id, label, choices)
}

你可以在一个闪亮的应用程序中使用它,比如

runApp(shinyApp(
  ui = fluidPage(
    lapply(c("cyl", "gear", "carb"), function(x) mySelectInput(mtcars, x))
  ),
  server = function(input, output, session) {
  }
))

这将为cyl, gear, carb变量创建三个选择输入。我希望这对你有帮助,希望你能从这里学到并应用到你的需要

相关内容

  • 没有找到相关文章

最新更新