【发布时间】:2020-06-07 18:30:48
【问题描述】:
我正在开发一个从 API 提取数据的应用程序。我的下一个目标是单击数据表中的多行并将所有选定的行保存在连接的 Google 表格中,这就是我卡住的地方。我不知道如何以将数据存储在另一个变量中的方式选择数据,然后我可以将其发送到 Google 表格或另一个数据库。
library(shiny)
library(jsonlite)
library(tidyverse)
library(shinydashboard)
library(DT)
ui <- dashboardPage(
dashboardHeader(title = "APPLICATION"),
dashboardSidebar(
sidebarMenu(
menuItem('Menu', tabName='menu',
menuSubItem('Select Data', tabName='tab1'),
menuSubItem('Selected Data', tabName='tab2')
)
)
),
dashboardBody(
tabItems(
tabItem(tabName='tab1',
textInput('usernameinput', 'Username:', 'Username'),
actionButton("search", "Search", class = "btn btn-info"),
br(),
tags$div(tags$h3(tags$b(" Select Data",align="middle",style="color: rgb(57,156,8)"))),
br(),
DT::dataTableOutput('table')
),
tabItem(tabName='tab2'
)
)
)
)
server <- function(input, output, session) {
observeEvent(input$search, {
url <- paste0("https://API-LINK/", input$usernameinput)
link <- fromJSON(url, flatten=T)
data <- as.data.frame(link$results)
output$table <- renderDataTable({
DT::datatable(data,selection = "multiple",
extensions = c('Buttons', 'ColReorder', 'FixedHeader', 'Scroller'),
rownames=FALSE,
options=list(dom = 'Bfrtip',
searching = T,
pageLength = 25,
searchHighlight = TRUE,
colReorder = TRUE,
fixedHeader = TRUE,
filter = 'bottom',
buttons = c('copy', 'csv','excel', 'print'),
paging = TRUE,
deferRender = TRUE,
scroller = TRUE,
scrollX = TRUE,
scrollY = 700
))
})
})
# print the selected indices
output$selected = renderPrint({
s = input$ListingID
if (length(s)) {
cat('These rows were selected:\n\n')
cat(s, sep = ', ')
}
})
}
shinyApp(ui, server)
【问题讨论】: