如何获取选定行中单元格的值(闪亮的 DT 库)

How get the value of a cell in a selected row (shiny DT library)

我正在尝试打印所选行中某个单元格的值。

这是ui.R

中的datatanle代码
body <- dashboardBody(
    tabItems(#Contenido de las pestañas
        tabItem(#Pestaña para consultas
            tabName = "consulta",
            DT::dataTableOutput("tablaConsulta"),
            textOutput("consultaSelecionada")
        )
)

这是 server.R

中的代码
output$tablaConsulta <- DT::renderDataTable({#Tabla consultas
    library(RODBC)
    nombre_data <- "consulta.rds"##Nombre archivo
    if(file.exists(nombre_data)){##Si existe el archivo
        consulta<- readRDS(nombre_data)## Recojemos los datos desde el archivo
    }else{##Si no existe el archivo
        # Nos conectamos a la base de datos
        conn <- odbcConnect("ORAC11.ORACLE11G", uid="l21", pwd="l21", rows_at_time = 500, believeNRows=FALSE)
        sql <- "select COCODIGO, COTEXTO,COCOSE,COCOPS,COFECHA from L2113T00"
        #Ejecutamos la query
        consulta <- sqlQuery(conn,sql) 
        close(conn)
        #La guardamos en el archivo
        saveRDS(consulta,nombre_data)
    }
})

这段代码输出"consultas"数据表,没问题。问题是,我需要在 textOuput.

中打印 "COCODIGO"

我试着这样做:

output$consultaSelecionada <- renderPrint({
    s = input$tablaConsulta_rows_selected
    cat("Consultas selecionadas")
    cat(s,sep=", ")
})

这会打印选定的行号,我需要打印选定的行 "COCODIGO" 值。

我该怎么做?

您需要在渲染函数之外创建 table。这样做将改善渲染时间和可维护性。
它还将使 consulta 对象在(闪亮的)全局环境中可用。
然后你可以用它来子集吗:

server.R

library(shiny)
library(DT)
library(RODBC)

function(input, output) {
    
    nombre_data <- "consulta.rds"##Nombre archivo
    
    if(file.exists(nombre_data)){ ##Si existe el archivo
        consulta<- readRDS(nombre_data) ## Recojemos los datos desde el archivo
          } else { ##Si no existe el archivo
          # Nos conectamos a la base de datos
          conn <- odbcConnect("ORAC11.ORACLE11G", 
                              uid="l21", 
                              pwd="l21", 
                              rows_at_time = 500, 
                              believeNRows=FALSE)
        sql <- "select COCODIGO, COTEXTO,COCOSE,COCOPS,COFECHA from L2113T00"
        #Ejecutamos la query
        consulta <- sqlQuery(conn,sql, stringsAsFactor = F) 
        close(conn)
        #La guardamos en el archivo
        saveRDS(consulta,nombre_data)
    }
    
    output$tablaConsulta <- DT::renderDataTable({consulta
        
        
    })
    
    output$consultaSelecionada <- renderText({
        s = input$tablaConsulta_rows_selected
        consulta[s, 'COCODIGO']
    })
}