在 Shiny 中使用部分 textInput 作为 R 中的变量
Posted
技术标签:
【中文标题】在 Shiny 中使用部分 textInput 作为 R 中的变量【英文标题】:Using partial textInput in Shiny as variable in R 【发布时间】:2019-11-05 11:24:30 【问题描述】:我想在 Shiny 中使用 textInput 的一部分来创建一个变量,该变量将依次与数据框 (DF) 中的值匹配,并根据该匹配值创建 textOutput。假设我有一个 textInput ,其典型输入为例如ABC 123、ABC 234、ABC 345、BCD 123、BCD 234、BCD 345。我还有一个 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 中找到正确的值并改为输出。
【问题讨论】:
【参考方案1】:您可以将您的 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
提取您想要的值
【讨论】:
太好了,使用 inputString 从 DF 获取相关值的最佳方法是什么,以便 mySelection 中的最终输出是值 10,如果用户输入是 ABC 123。跨度>DF[which(DF$col1 == mySelection()),]$col2
我无法将正确的值输入到 output$first 中,我得到了 input$UserInput 的第一部分(即 ABC),但我想使用该字符串来匹配相应的值在 DF 列 2 中,因此 output$first 实际上输出值 10 。我似乎错过了一些东西或一步。非常感谢任何帮助。
帮助您会容易得多。如果您使用正在使用的 DF 示例编辑原始问题。
谢谢,我把原来的解释改了,加了相关资料。以上是关于在 Shiny 中使用部分 textInput 作为 R 中的变量的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Shiny 在 readORG 中使用 textInput 作为图层名称
R Shiny:在UI上的textInput中检查正则表达式
r Shiny 使 textInput 以先前的 selectInput 为条件