gpt4 book ai didi

r - 使在一个 react ​​性对象中创建的对象以 Shiny 的方式可供另一个 react 性对象使用

转载 作者:行者123 更新时间:2023-12-04 10:27:12 24 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Set global object in Shiny

(1 个回答)


8年前关闭。




我有一个 Shiny 的应用程序,我在其中定义了一个基于 slider 的对象并创建了一个 data.frame从中。这用于创建一个图,我想在其下方包含一个汇总表。我的问题是必须在 react 对象内部定义绘图才能根据 slider 进行更新,但我发现当我尝试访问对象以在不同的 react 对象中打印摘要时,找不到它。

我不想为了让对象进入另一个 react 对象而两次运行相同的计算代码。我最初的两个想法:

  • 我尝试使用 save(object, file = "...")在第一个 react 对象内,然后放入 load(file = "...")在第二个里面,但它不会更新。
  • 我想在我的 react 之外定义我的对象 plotOutput定义,但我很确定当用户输入改变时它不会更新;它将保持初始值 input对象默认设置。

  • 好吧,只是继续尝试后一种想法,但它甚至没有那么远:
  • 我把它放在 shinyServer(...) 之前它无法生成数据,因为我的调用取决于 input它不知道input在那时候。
  • 我把它放在 shinyServer(...) 之后但在 renderPlot(...) 之前尝试为所有输出对象创建一个“全局可用”对象,它责备我试图做一些使用 input 的事情在 react 函数之外。

  • 这里有一个例子来说明,修改自 Shiny 的 "Hello Shiny!" example :

    ui.R
    library(shiny)

    # Define UI for application that plots random distributions
    shinyUI(pageWithSidebar(

    # Application title
    headerPanel("Hello Shiny!"),

    # Sidebar with a slider input for number of observations
    sidebarPanel(
    sliderInput("obs",
    "Number of observations:",
    min = 1,
    max = 1000,
    value = 500)
    ),

    # Show a plot of the generated distribution
    mainPanel(
    plotOutput("distPlot"),
    tableOutput("summary")
    )
    ))

    服务器.R
    library(shiny)

    # Define server logic required to generate and plot a random distribution
    shinyServer(function(input, output) {

    output$distPlot <- renderPlot({

    # generate an rnorm distribution and plot it
    dist <- rnorm(input$obs)
    hist(dist)
    })

    output$summary <- renderTable({
    #dist <- rnorm(input$obs)
    summary <- table(data.frame(cut(dist, 10)))
    })
    })

    如果按原样运行, cut会抛出错误,因为它不知道 dist .如果您取消注释我们重新定义 dist 的行正如 plotOutput 中所做的那样,然后它会工作。

    这是简单的代码——我的代码涉及更多,我真的不想运行它两次,只是为了让另一个 react 输出知道相同的结果。

    建议?

    最佳答案

    只是根据 other question I consider mine to have duplicated 中的答案充实上面的例子。 ,代码如下所示:

    library(shiny)

    # Define server logic required to generate and plot a random distribution
    shinyServer(function(input, output) {

    dist <- reactive(rnorm(input$obs))

    output$distPlot <- renderPlot({

    # generate an rnorm distribution and plot it
    dist <- dist()
    hist(dist)
    })

    output$summary <- renderTable({
    dist <- dist()
    summary <- table(data.frame(cut(dist, 10)))
    })
    })

    关于r - 使在一个 react ​​性对象中创建的对象以 Shiny 的方式可供另一个 react 性对象使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19466747/

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