在 Shiny 中使用部分 textInput 作为 R 中的变量

Using partial textInput in Shiny as variable in R

我想在 Shiny 中使用 textInput 的一部分来创建一个变量,该变量将依次与数据框 (DF) 中的值匹配,并根据该匹配值创建 textOutput。假设我有一个带有典型输入的 textInput,例如ABC 123、ABC 234、ABC 345、BCD 123、BCD 234、BCD 345。我还有一个 DF,其中包含一列 (Col1) 以及典型文本输入的 'first' 部分,即 ABC、BCD 和另一列一组相应的值 (Col2) 像这样

DF <-
   Col1 Col2
1  ABC    W
2  BCD    Y
3  CDE    X
4  DEF    Z

我想拿textInput,比如说"ABC 123",select只有它的'first'部分("ABC")然后用这个字符串找到它对应的值在 DF$Col2 中并在 Shiny 中创建 textOutput 为 populate/output 该值,在本例中为 "W"。同样,如果textInput(input$UserInput)中的用户输入是CDE 345,我希望输出值显示为"X"。

我可以创建 'first' 部分文本并输出到相关的 space 但在使用它在 DF 中查找相应值并将其输出的附加部分时遇到问题。

我用它来隔离文本输入的 'first' 部分,

  output$first <- renderText({paste(substr(input$UserInput, 1, 
  nchar(input$UserInput)-4))})  

这会输出 "ABC"、"CDE" 等字符串,但我在第二步中使用它时遇到问题,即在 DF$Col2 中找到正确的值并将其输出。

您可以将 substr 调用包装到反应函数中。

mySelection <- reactive({
    inputString <- paste(substr(input$UserInput, 1, nchar(input$UserInput)-4))
    return(inputString)
})

现在 inputString 的值将根据 input$UserInput 的值发生变化,并且可以在您的脚本中的任何位置调用(如 mySelection())。

output$first <- renderText({mySelection()})

然后您可以使用 DF[which(DF$col1 == mySelection()),]$col2

提取您想要的值