如何获取选定行中单元格的值(闪亮的 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']
})
}
我正在尝试打印所选行中某个单元格的值。
这是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']
})
}