首页 > 解决方案 > 使用 selectInput 来确定在 r shiny 中应用什么函数

问题描述

我正在尝试创建一个闪亮的页面,其中下拉输入选择选择一个函数以应用于数据集(我自己创建的不同绘图函数)。

我已经尝试定义和命名我想要的功能列表。

soil_function_list = c(data.sum, texture.triangle.plot, compaction.plot, carbon.plot, percent.change.plot)

names(soil_function_list) = c("Data Table", "Texture Triangle", "Compaction Plot", "Carbon Plot", "Change Plot")

然后在 UI 中,selectInput 函数引用这些名称:

    ui <- shinyUI(
    navbarPage(         
    title = "Title",
    tabPanel("Soil",
             selectInput("soilplottype", "Choose Plot Type", choices = names(soil_function_list)),
             mainPanel(plotOutput("soilplot"))),
    )
)

然后在服务器中,我希望输出根据输入应用任何函数

server <- function(input, output) {

  output$soilplot = renderPlot({
    func = input$soilplottype
    soil_function_list$func(data)
    })


}

这在我的页面上返回一个错误,上面写着“尝试应用非函数”,所以我怀疑问题出在我如何引用我的函数库。

当我尝试直接从 soil_function_list 中使用这些函数时,它会向后放置刻度线,效果很好 - 例如:

soil_function_list$'Data Table'(data)

我不确定这些到底是什么意思,或者如何在闪亮的输入框架中应用它们。我在这里做错了什么?

谢谢!

标签: rinputshiny

解决方案


推荐阅读