【问题标题】:Shiny: how to choose a dataframe as input in a Rmd document ShinyShiny:如何在 Rmd 文档中选择数据框作为输入
【发布时间】:2021-09-24 03:21:08
【问题描述】:

我在 Shiny 中选择数据框变量作为输入时遇到问题。

inputPanel(
  selectInput("a", label = "N:",
              choices = c(1,2, 3, 4), selected = 1),
  selectInput("dataframe", label = "dataframe",
              choices = c(A,B), selected = A)
)

在 renderPlot 中,我的 input$k 工作正常,因为它是一个简单的数字。

但是,对于 input$dataframe,它不起作用。 我收到错误消息:non-numeric argument to binary operator

提前感谢您的帮助。

【问题讨论】:

    标签: r shiny r-markdown


    【解决方案1】:

    selectInput 返回一个字符向量。您可能想给出数据集的名称,然后对它们进行评估,而不是尝试传递数据集本身。

    来自selectInput的帮助:

    服务器值:字符串向量,通常长度为 1,带有所选项目的值。当 multiple=TRUE 且未选择任何内容时,此值为 NULL。

    完整示例:

    library(shiny)
    
    ui <- fluidPage(
        selectInput("data",
            "Select dataset",
            choices = c("iris", "mtcars")
        ),
        dataTableOutput("tbl")
    )
    
    server <- function(input, output, session) {
        output$tbl <- renderDataTable({
            get(input$data)
        })
    }
    
    shinyApp(ui, server)
    

    【讨论】:

    • 谢谢。我在 Rmd 文档中工作,因此语法与 Shiny 应用程序有点不同。 Mu 数据集实际上是数据框(我的错误是术语错误)。如何在数据框名称 A 和 B 之间进行选择?谢谢。
    • 没有区别。您需要通过变量名将它们作为字符串引用,就像我发布的代码一样。
    • 谢谢。我以前用引号试过这个,但我一直收到同样的错误“二进制运算符的非数字参数”。当我使用 input$data 时,我也尝试将其作为 data.frame (as.data.frame(input$data)) 传递,但没有奏效。
    • 你用过get(input$data)吗?
    • 不用担心。 get 用于返回作为字符串传递的对象的值。对于大多数 Shiny 输入,您只需要使用字符串,因此您不需要经常使用它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-30
    • 2021-03-02
    • 1970-01-01
    • 2022-01-02
    • 2016-10-28
    • 2016-06-03
    • 2016-08-14
    相关资源
    最近更新 更多