gpt4 book ai didi

r - 调用自定义函数将输入传递给函数参数 Shiny

转载 作者:行者123 更新时间:2023-12-05 07:37:38 24 4
gpt4 key购买 nike

我想在 Shiny 中将输入作为参数传递,以便我可以根据用户选择提取必要的文件。这是可能的还是我必须在运行应用程序之前加入文件?该函数是下面子集数据部分中的 MyFunction。

library(shiny)


ui <- fluidPage(
titlePanel("Title"),

sidebarLayout(
sidebarPanel(position = "left",
selectInput(inputId = "competitor",
label = h3("Competitor:"),
choices = unique(Grouped$variable1),
selected = "1"),

selectInput(inputId = "state",
label = h3("State:"),
choices = c("IA","MA","PA","CA","MD","TN"),
selected = "CA")),

mainPanel(plotOutput(outputId = "lineplot", height = "400px"))
)
)


server <- function(input, output) {

# Subset data
reactive({
MyFunction(input$state)})

selected_company <- reactive({
Grouped %>%
filter(Variable2 == input$competitor)})

output$lineplot <- renderPlot({
ggplot(selected_company(),aes(x=Month, y=Rate)) +
geom_bar(stat="identity",fill="blue") +
theme_classic()

})
}

# Create Shiny object
shinyApp(ui = ui, server = server)

本质上,我是按状态提取文件。然后我操纵该文件以在应用程序中以图形形式显示特定指标,并添加一个用户选择他们希望看到的“竞争对手”。

我会给你完整的函数,但考虑到许多变量的专有性质,可能不值得花时间重新格式化来摆脱这些,因为它是一个长函数。但是,该功能本身可以正常工作。

问题出在 Shiny 端,它试图传递一个基于 react 性输入的函数。

最佳答案

如果您想在 input$state 更改时重新运行该函数,请使用

observe({MyFunction(req(input$state))})})

req 部分在将输入传递给函数之前确保输入可用(不是 NULL)。你编码的方式,即

reactive({MyFunction(input$state)})  

该函数将永远不会运行,因为没有观察者创建响应式(Reactive)。关于加入文件:您可以像这样source定义函数的文件

# app.R
source("path/to/my_function/definition.R")

shinyApp(
...
)

关于r - 调用自定义函数将输入传递给函数参数 Shiny,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48465102/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com