矢量输入闪亮的R然后使用它

Ind*_*rya 8 r shiny

在Shiny R中,我想要一个简单的方法将一个向量作为ui.R中的用户输入,然后想在服务器中的一个函数中使用它.我是新的有光泽,请帮忙.

Mik*_*ise 21

这里有一些简单的东西让你入门 - 祝你好运.请记住 - 下次发布一些代码或者你肯定会被投票:

library(shiny)

u <- shinyUI(pageWithSidebar(

  headerPanel("Entering Vectors in Shiny"),
  sidebarPanel(
    textInput('vec1', 'Enter a vector (comma delimited)', "0,1,2")
  ),

  mainPanel(
    h4('You entered'),
    verbatimTextOutput("oid1"),
    verbatimTextOutput("oid2")
  )
))

s <- shinyServer(function(input, output) {

  output$oid1 <- renderPrint({
    cat("As string:\n")
    cat(input$vec1)
    }
    )

  output$oid2<-renderPrint({
    x <- as.numeric(unlist(strsplit(input$vec1,",")))
    cat("As atomic vector:\n")
    print(x)
  }
  )
}
)
shinyApp(ui = u, server = s)
Run Code Online (Sandbox Code Playgroud)

产量:

在此输入图像描述

  • 要忽略输入中的前导和尾随空格,可以在unlist(strsplit(input $ vec1,“,”))周围添加`trimws()`。 (3认同)

con*_*mac 6

我知道这是一篇旧文章,但我遇到了用户输入向量作为闪亮输入的另一种方法 - 使用create = TRUEmultiple = TRUE选项selectizeInput()。稍微修改一下上面 Mike Wise 的代码示例:

library(shiny)

ui <- shinyUI(

  pageWithSidebar(

    headerPanel("Entering Vectors in Shiny")

    , sidebarPanel(

      selectizeInput(
        "vec1"
        , "Enter a vector"
        , choices = NULL
        , multiple = TRUE
        , options = list(create = TRUE)
      )

    ),

    mainPanel(

      h4("You entered")

      , verbatimTextOutput("oid1")

      , verbatimTextOutput("oid2")

    )

  )
)

server <- shinyServer(function(input, output) {

  output$oid1 <- renderPrint({

    req(input$vec1)

    cat("As string:\n")
    cat(input$vec1)

  })

  output$oid2 <- renderPrint({

    req(input$vec1)

    cat("As atomic vector:\n")
    print(as.numeric(input$vec1))

  })

})

shinyApp(ui = ui, server = server)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述


在此输入图像描述