с использованием RShiny / SQL в первый раз, так что я уверен, что неправильно понимаю основы, но ни одна из документации не помогает. Я пытаюсь:
(1) позволить пользователю выбрать, какую таблицу SQL загрузить в
(2) отправить строку символов (имена белков)
(3) вернуть, какие имена белков в выбранной таблице
я справился с первыми 2 штрафами, но в течение l oop я получаю ' 0 аргументов, переданных' names ', для которых требуется один ', и я не уверен почему. Мой код:
UI:
>library(shiny)
ui <- fluidPage(
titlePanel("TBD"),
sidebarLayout(
sidebarPanel(
selectInput("variable", "variable:",
list("Knoener" = "Knoener",
"Liz" = "Liz",
"Kula" = "Kula")),
actionButton("button1", "Click Me"),
textInput("names","Enter protein symbols"),
actionButton("button2", "Click Me"),
actionButton("button3", "Let's go!")
),
mainPanel(
textOutput("text1"),
textOutput("text2"),
textOutput("text3")
)
))
СЕРВЕР:
library("shiny")
library("DBI")
library("dplyr")
library("dbplyr")
library('pool')
loadData <- function(table) {
db <- dbConnect(MySQL(), dbname = "knoenerdb", host = "localhost",
user = "root",
password = "blahblah")
query <- sprintf("SELECT * FROM %s", table)
chosendata <- dbGetQuery(db, query)
dbDisconnect(db)
}
server <- function(input, output) {
chosendata <- observeEvent(input$button1, {
loadData(input$variable)
output$text1 <- renderText({paste("input is",input$variable)})})
names <- observeEvent( input$button2, {
names <- unlist(strsplit(input$names, ", "))
output$text2 <- renderText({paste("names are",names)})
})
observeEvent( input$button3, {
for(i in 1:length(names())){
if(names()[i] %in% chosendata()$proteins){
updated = c(updated,names()[i])
} else
updated = c(updated, "NULL")
}
output$text3 <- renderText({paste("matches are",updated)})
})
}
Спасибо за помощь!