代码之家  ›  专栏  ›  技术社区  ›  Sumchans

在数据表中选择并显示行的值

  •  0
  • Sumchans  · 技术社区  · 6 年前

    我对R&闪亮,这将是我的第一个项目,这是我能够得到这一点后,通过一些可怕的教程。

    到目前为止我得到的是:

    library(shiny)
    library(data.table)
    addr <- as.data.table(read.csv("addresses.csv", header = T, stringsAsFactors = F))
    names(addr) [1:4]<- c("STREET ADDRESS","CITY NAME","PROVINCE","POSTAL CODE")
    
    ui <- fluidPage(
      br(),
      fluidRow(
        column(12, div(DT::dataTableOutput("addressTable"), style="font-family:verdana", align="left"))
      ),
      fluidRow(
        column(4, div(textOutput("selectedAddress"), align="center"))
      )
    )
    
    server <- function(input, output) {
      output$addressTable <- DT::renderDataTable({addr}, server = T, selection = 'single')
    
      output$selectedAddress <- DT::renderDataTable({
        selectedrowindex <<-input$addr_rows_selected
        selectedrowindex <<-as.numeric(selectedrowindex)
        selectedrow <- (addr[selectedrowindex,])
        selectedrow
      })
    }
    
    shinyApp(ui, server)
    
    0 回复  |  直到 6 年前
        1
  •  1
  •   Wil    6 年前

    一些调整:

    1. 您访问所选行的语法有点不正确。从 data.table documentation dataTableOutput() ; 你在哪里写的 input$addr_rows_selected input$addressTable_rows_selected 为了找到用 DT::dataTableOutput("addressTable") .
    2. 将输出类型与渲染类型混合。如果要将地址输出为文本(按行) textOutput("selectedAddress") renderText() 而不是 DT::renderDataTable() .
    3. paste(...,collapse = ",")
    library(shiny)
    library(data.table)
    addr <- as.data.table(read.csv("addresses.csv", header = T, stringsAsFactors = F))
    names(addr) [1:4]<- c("STREET ADDRESS","CITY NAME","PROVINCE","POSTAL CODE")
    
    ui <- fluidPage(
      br(),
      fluidRow(
        column(12, div(DT::dataTableOutput("addressTable"), style="font-family:verdana", align="left"))
      ),
      fluidRow(
        column(4, div(textOutput("selectedAddress"), align="center"))
      )
    )
    
    server <- function(input, output) {
      output$addressTable <- DT::renderDataTable({addr}, server = T, selection = 'single')
    
      output$selectedAddress <- renderText({
        selectedrowindex <- input$addressTable_rows_selected
        selectedrowindex <- as.numeric(selectedrowindex)
        selectedrow <- paste(addr[selectedrowindex,],collapse = ", ")
        selectedrow
      })
    }
    
    shinyApp(ui, server)