【问题标题】:Save user inputs as a character vector in R将用户输入保存为 R 中的字符向量
【发布时间】:2022-01-19 02:36:22
【问题描述】:

有没有办法将用户输入(textInput)存储为字符向量,以便稍后在程序中使用?假设用户输入是 - FB、AAPL、AMZN、NFLX、GOOGL - 我希望将它们存储为

user_inputs

对不起,我下面的代码只是出错了。在过去的 2 个小时里,我一直在努力完成这项工作,任何帮助都将不胜感激!

library(shiny)

ui <- fluidPage(
  textInput('vec1', 'Enter a vector (comma delimited)')
  verbatimTextOutput("mytxt")
)

server <- function(input, output) {
  Output$mytxt <- renderPrint{
    for (i in input$vec1){
      i
    } 
  } 
  
    
}

shinyApp(ui, server)

EDIT我想在闪亮的内部使用它。

【问题讨论】:

  • 查看 shinyWidgets 包:rdocumentation.org/packages/shinyWidgets/versions/0.6.2 安装包后,您可以加载库,然后启动闪亮的小部件库:library(shinyWidgets); shinyWidgetsGallery() 它将在独立窗口中加载每个小部件的示例。如果您从用户那里收集的值是固定的,则可以将它们预加载到多选选择器小部件中以供用户选择。图库对于收集用户输入非常有用。

标签: r shiny shinydashboard


【解决方案1】:

不幸的是,正如 Tim 指出的,您的 Shiny 代码中有许多错误,与将字符串拆分为字符向量无关。特别是,您需要用逗号分隔fluidPage 内的行,output 不应大写,renderPrint 之类的函数应使用() 而不是{}

在添加您自己的逻辑之前,始终以工作代码作为模板开始。这让您更容易找到真正的问题所在。

我使用蒂姆的答案来拆分字符串。

library(shiny)

ui <- fluidPage(
    textInput('vec1', 'Enter a vector (comma delimited)'),
    verbatimTextOutput("mytxt")
)

server <- function(input, output) {
    output$mytxt <- renderPrint(strsplit(input$vec1, ",\\s*")[[1]])
}

shinyApp(ui, server)

【讨论】:

    【解决方案2】:

    只需在 CSV 输入上使用 strsplit

    input <- "FB, AAPL, AMZN, NFLX, GOOGL"
    output <- strsplit(input, ",\\s*")[[1]]
    output
    
    [1] "FB"    "AAPL"  "AMZN"  "NFLX"  "GOOGL"
    

    【讨论】:

    • library(shiny) ui
    • 尝试这样做,但没有成功。
    • 什么不起作用?
    • 它出错了。我在上面的评论中发布的代码。我需要在 Shiny 中使用它,先生。
    • 您的代码中还有其他问题,与我的回答无关。
    猜你喜欢
    • 1970-01-01
    • 2014-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多