在 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
提取您想要的值
我想在 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