В настоящее время я разрабатываю блестящее приложение, и я не могу обновить textInput значениями, полученными с помощью sqldf () из фрейма данных. Фрейм данных выглядит так

             Email First Last
1 abc.yyz@gmail.com   abc  yyz
2 vvv.rrr@gmail.com   vvv  rrr

Проблема в том, что когда я выбираю адрес электронной почты, он должен отображать имя в textInput1 и фамилию в TextInput2.

Используемый код:

if (interactive()) {

  ui <- fluidPage(
    selectizeInput('email', 'Enter Email ID', choices = sam,options = list(
      placeholder = "Please select your Email ID",
      onInitialize = I('function() { this.setValue(""); }'))),
    textInput('fn', ' Enter your First Name'),
    textInput('ln', 'Enter your Last Name')
  )

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

      observeEvent(input$email,{
        check <-  paste(input$email)
        fetchvalue <- sqldf("select * from dataset where `Email` == 'check'")
        first <- fetchvalue$First
        updateTextInput(session, "fn",value = first)
      })


  }

  shinyApp(ui, server)
}

Может ли кто-нибудь помочь решить эту проблему? заранее спасибо

1
Nevedha Ayyanar 6 Окт 2018 в 08:33

1 ответ

Лучший ответ

Код вашего приложения выглядит нормально. Вот mwe для вашего приложения -

library(shiny)
library(dplyr)

shinyApp(
  ui = fluidPage(
    selectizeInput('email', 'Enter Email ID', choices = paste0(letters, "@example.com"), options = list(
      placeholder = "Please select your Email ID",
      onInitialize = I('function() { this.setValue(""); }'))),
    textInput('fn', ' Enter your First Name'),
    textInput('ln', 'Enter your Last Name')
  ),
  server = function(input, output, session) {
    observeEvent(input$email,{
      # check <-  paste(input$email)
      fetchvalue <- data_frame(Email = paste0(letters, "@example.com"), First = LETTERS) %>% filter(Email == input$email)
      first <- fetchvalue$First
      updateTextInput(session, "fn", value = first)
    })
  }
)

Как упоминалось в моем комментарии, я подозреваю, что ваш запрос sqldf неверен. Попробуйте вместо этого

fetchvalue <- sqldf(sprintf("select * from dataset where Email = '%s'", input$email))

0
Shree 6 Окт 2018 в 13:42