在R中使用Shiny中的部分文本表示



我想在Shiny中拿出一部分TextInput,以创建一个变量,该变量又将与dataFrame(DF(中的值匹配,并基于该匹配的值创建TextOutput。假设我有一个文本输入,典型的输入为ABC 123,ABC 234,ABC 345,BCD 123,BCD 234,BCD345。我还有一个df,其中包含一个列(col1(,其中包含典型文本输入的"第一部分"像SO

的相应值(Col2(
DF <-
   Col1 Col2
1  ABC    W
2  BCD    Y
3  CDE    X
4  DEF    Z

我想取文本输入,例如" ABC 123",仅选择其中的"第一部分"(" ABC"(,然后使用此字符串在DF $ COL2中找到其相应的值,然后在Shiny中创建TextOutput以填充textOutput/输出该值,在这种情况下值" W"。同样,如果TextInput中的用户输入(输入$ userInput(为CDE 345,我希望将输出值显示为" x"。

我可以创建"第一个"部分文本并输出到相关的空间中,但在使用它的附加部分中遇到麻烦,以在DF中找到相应的值并输出。

我正在使用它来隔离文本输入的"第一"部分,

  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

提取所需的值

相关内容

  • 没有找到相关文章

最新更新