如何将Shiny for Equality中的TextInput与另一个对象进行比较?

时间:2019-05-13 21:25:35

标签: r string shiny comparison

我一直在编写一个Shiny App,其中部分涉及将用户的文本输入与写在代码中的矢量或字符串进行比较。但是,我无法使它正常工作,而且我对为什么会感到茫然,因为它不会引发任何错误。当比较为FALSE(即不相等)时,它将仅打印/粘贴指定的条件。当我通过基R运行所有步骤(减去与Shiny无关的所有操作)时,它的确返回TRUE,因此我不确定在输入和与R对象进行比较之间的转换中丢失了什么。我已经尝试过isTRUE(all.equal(...))和same(...)以及isTRUE(identical(...)),但似乎都无法正常工作或返回FALSE条件。我在下面提供了包含其变体的代码-我一直在使用“ ding”作为与输入的比较,就像简短而易于键入的内容来对其进行测试一样。

在我的机智中,任何帮助将不胜感激!


library(shiny)
library(stringr)

site <- c(rep("A",5), rep("B",5), rep("C",5), rep("D",5))

my.num <- 1:20

temp <- rnorm(20, 5, 1)

growth <- 5*temp + rnorm(20,0,2)


my.data <- data.frame(site=site, my.num=my.num, temp=temp, growth=growth)

my.data

ui <- pageWithSidebar(
  headerPanel('Data Wrangler')
  ,
  sidebarPanel(
    textInput("combination", "Combine the several variables into one data frame with R code:", NULL),
    actionButton("go5", "GO!")
  )
  ,
  mainPanel(

    tableOutput("display1"),
    textOutput("text.dsp")

  ))

server <- function(input, output, session) {

  buttonValue <- reactiveValues(go5=FALSE)


  observeEvent( input$go5, {

str.input <- str_extract(input$combination, "data.frame(site=site, my.num=my.num, temp=temp, growth=growth)")
str2.input <- as.character(str_extract(input$combination, "ding")
comparestring <- "ding"

isolate({

  buttonValue$go5 = FALSE


})
output$display1 <- renderTable({


  if (isTRUE(identical(str.input, "data.frame(site=site, my.num=my.num, temp=temp, growth=growth)")) & buttonValue$go5) {
    my.data
  } else if(isTRUE(all.equal(str2.input,comparestring)) & buttonValue$go5){
    my.data
  } else {
    NULL
  }

})

  })


  session$onSessionEnded({
    print("stop")
    stopApp   
  }) 

}



  shinyApp(ui = ui, server = server)

1 个答案:

答案 0 :(得分:0)

这就是我想你所追求的:

(尝试输入“ ding”并按“ go”)

version: '3'
services:
  web:
    stdin_open: true
    tty: true
    build: .
    ports:
     - "80:80"
  redis:
    image: "redis:alpine"