繁体   English   中英

在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,BCD345。我也有一个DF,其中包含一列(Col1),其具有典型textInput的“第一”部分即ABC,BCD和另一列具有一组对应值(Col2)的像这样

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

我想使用textInput,说“ ABC 123”,仅选择它的“第一”部分(“ ABC”),然后使用此字符串在DF $ Col2中找到其对应的值,并在Shiny中创建textOutput来填充/输出值,在这种情况下为“ W”。 同样,如果textInput(input $ 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提取所需的值

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM