我需要创建一个对象(或变量(在我的服务器部分,然后传递回ui checkboxGroupInput。我的文件有点复杂。在这里,我只使用菱形数据来说明我正在尝试做的事情,尽管应用程序正在做什么)是没有意义的,我创建了一个df(钻石数据集的子集),我正尝试将其传递回ui checkboxGroupInput,以便选择要显示的列,我的问题是如何将df传递回ui?提前。

这是我的app.r:

library(shiny)
library(ggplot2)
library(DT)

ui <- fluidPage(
    sidebarLayout(
        sidebarPanel(
            selectInput("nrow", label = h3("number of rows"), 
                        choices = list(5, 10, 20), 
                        selected = 5),
            checkboxGroupInput("show_vars", "Columns in diamonds to show:",
                                   names(df), selected = names(df))
        ),
        mainPanel(
            DT::dataTableOutput("mytable1")
            )
        )
    )


server <- function(input, output) {

    # choose rows to display
    df = diamonds[sample(nrow(diamonds), input$nrow), ]

    output$mytable1 <- DT::renderDataTable({
        DT::datatable(df[, input$show_vars, drop = FALSE])
    })

}

shinyApp(ui, server)

错误信息:

Warning: Error in .getReactiveEnvironment()$currentContext: Operation not allowed without an active reactive context. (You tried to do something that can only be done from inside a reactive expression or observer.)

#1楼 票数:4 已采纳

您看到的特定错误是因为您试图在此行中的任何反应式上下文(根据错误)之外使用input$nrow

 df = diamonds[sample(nrow(diamonds), input$nrow), ]

因此,这需要进行某种反应式表达

另外,您可以使用renderUIuiOutput函数在服务器内部创建UI元素。 这样,可以更轻松地从服务器控制UI。

library(shiny)
library(ggplot2)
library(DT)

ui <- fluidPage(
  sidebarLayout(
    sidebarPanel(
      selectInput("nrow", label = h3("number of rows"), 
                  choices = list(5, 10, 20), 
                  selected = 5),
      uiOutput(outputId = "show_vars")
    ),
    mainPanel(
      DT::dataTableOutput("mytable1")
    )
  )
)


server <- function(input, output) {

  # choose rows to display
  df <- reactive({
    diamonds[sample(nrow(diamonds), input$nrow), ]
  })

  output$show_vars <- renderUI({
    checkboxGroupInput("show_vars", "Columns in diamonds to show:",
                       names(df()), selected = names(df()))
  })


  output$mytable1 <- DT::renderDataTable({
    DT::datatable(diamonds[, input$show_vars, drop = FALSE])
  })

}

shinyApp(ui, server)

  ask by zesla translate from so

未解决问题?本站智能推荐:

1回复

如何将参数从闪亮的ui对象传递到服务器渲染对象

我正在构建一个闪亮的仪表板,并从同一数据集中绘制了许多图。 与其为每个选择的系列制作单独的服务器output $ name对象,不如让一个服务器对象带有一个变量,然后将一个变量传递给每个ui对象,以指示我要显示的系列。 请注意,我正在创建的多个服务器对象从一系列对象fcast_data
2回复

如何简单地将变量从服务器传递到UI?

我有一个闪亮的应用程序,其中服务器和用户界面位于两个不同的文件中。 目的是显示网络图,因此我有一个节点列表和一个边列表。 我想添加一个输入,允许用户选择某些节点。 我的用户界面: 我的服务器: 在UI的selectInput中,我希望建议的值成为我在绘图中使用的节点列表
1回复

如何在 Ui 中返回服务器对象?

我正在创建一个应用程序来分析统计模型。 用户在其中放置数据集并返回模型。 我想实现删除不重要的变量,但为此我需要我的文件的变量名返回到 selectInput,是否可以这样做?
1回复

将服务器的反应值传递给ui中的ui中的两个条件面板(未嵌套)?

我正在制作一个闪亮的应用程序,该应用程序将“ dateRangeInput”作为输入并为该“日期范围”内的数据绘制图表。 另外,当来自输入的日期在数据中不可用时,我正在使用conditionalPanel不显示绘图,并向用户显示文本以选择仅在数据中可用的日期。 问题是,无论日期输入如何,
1回复

在服务器中使用lapply生成渲染UI

我有一些像这个子subexample数据 我使用streamgraph和shiny包来生成带有标题的流图 我用过这个 我只用了一张图。 现在,我有一个像上面那样的数据帧列表,我想重现列表的每个数据帧的渲染。 我设法得到列表的流图 但我不知道如何更改UI部
1回复

R Shiny仪表板:从服务器生成完整的UI

下面的第一个MWE生成一个空的Shiny仪表板应用程序: 我正在尝试从服务器端动态生成相同的UI页面,如下面的第二个示例所示,仅在输入正确密码后才显示第二个页面。 它可以工作,但是页面设计消失了: 知道如何解决此问题吗?
2回复

将UI中的selectInput值动态传递到R中的服务器代码

R闪亮脚本中服务器中的process_map()函数如下所示创建图图像。 我的要求是Performance()函数中有两个属性“ FUN”和“ units”。 它们具有标准的四个值,可在下面的ui代码中在PickerInput ID的Case4和Case5下使用。 当前,我正在对值进行硬编
1回复

闪亮的仪表板-在服务器生成的侧边栏UI中隐藏menuitem

我有一个服务器生成的侧边栏。 创建完之后,我想隐藏它的第一个元素。 执行隐藏操作的观察者被执行,但是菜单项未被隐藏。 我试图弄清楚为什么它不起作用。 有什么想法吗? PS。 CSS选择器似乎是正确的,因为在服务器上未创建UI时所有选择器都可以使用。