У меня есть базовый c пример ниже, чтобы показать функциональность. Я хочу использовать значения из определенных столбцов выбранных строк для выполнения расчетов. Я могу получить и использовать эти значения, если я выберу ОДИНОЧНУЮ строку. Но я не выяснил, как извлечь эти значения удобным для строк MULTIPLE.
В конечном итоге мне придется использовать значения в операторе SQL, который извлекает данные из базы данных, которая соответствует им, но мне нужен фрейм данных значений, прежде чем я смогу построить оператор SQL.
Идеи?
UI
shinyUI(tagList(
useShinyalert(),
useShinyjs(),
navbarPage(title = "Tree Visualizer",
tabsetPanel(
id = "mainTabset",
tabPanel(
title = "Explore Tree",
class = "inputs",
column(
12,
selectInput(
inputId = "tree_type",
label = "Would you like to view a single sample, or cluster multiple samples?",
choices = c(
Choose = '',
Single = 'single',
Multiple = 'multiple'
),
selectize = FALSE
),
conditionalPanel(
condition = "input.tree_type == 'single'",
DT::dataTableOutput("tbl1"),
actionButton(
"button1",
"SUBMIT",
style = "background-color:#221B70;
color:#E0EB15;
border-color:#E61029;
border-style:double;
border-width:4px;
border-radius:50%;
font-size:19px;"
),
verbatimTextOutput('x4')
),
conditionalPanel(
condition = "input.tree_type == 'multiple'",
DT::dataTableOutput("tbl2"),
actionButton(
"button2",
"SUBMIT",
style = "background-color:#221B70;
color:#E0EB15;
border-color:#E61029;
border-style:double;
border-width:4px;
border-radius:50%;
font-size:19px;"
),
verbatimTextOutput('x5')
)
)
)
))
))
SERVER
shinyServer(function(input, output, session) {
session$onSessionEnded(stopApp)
output$tbl1 <- DT::renderDataTable({
mtcars
}, selection = 'single',
class = "display nowrap compact",
filter = "top",
extensions = 'Scroller')
output$tbl2 <-
DT::renderDataTable({
mtcars
}, selection = 'multiple',
class = "display nowrap compact",
filter = "top",
extensions = 'Scroller')
#button1
observeEvent(input$button1, {
output$x4 = renderPrint({
row_count <- input$tbl1_rows_selected
data <- mtcars[row_count, ]
id1 <- rownames(data[1,])
id2 <- data[, 1]
id3 <- data[, 7]
cat('\n\nSelected rows:\n\n')
cat(id1, id2, id3)
})
})
#button2
observeEvent(input$button2, {
output$x5 = renderPrint({
validate(need(
length(input$tbl2_rows_selected) > 1,
"Please choose two or more samples."
))
cat('\n\nSelected rows:\n\n')
cat(input$tbl2_rows_selected, sep = ', ')
#create dataframe of selected row properties
#for example if rows 4, 3, and 6 are selected:
#car name, mpg, qsec
#Hornet 4 Drive, 21.4, 19.44
#Datsun 710, 22.8, 18.61
#Valiant, 18.1, 20.22
})
})
})
GLOBAL
suppressWarnings({
suppressPackageStartupMessages({
library(shiny)
library(shinyjs)
library(tidyverse)
library(shinyalert)
library(DT)
})
})