在 Shiny 应用程序的 excelR 小部件中隐藏索引列(行号)
Hide index column (row numbers) in excelR widget of Shiny app
我用 R 制作了一个闪亮的应用程序,它向用户显示一个 Excel 类似的网格。 excelR
包是 JS 包 JSpreadsheet 的包装器。这个包自动将行号放在最左边的列中。我不要他们。
通过深入研究 JavaScript,我终于弄明白了如何使用 actionButton 通过发送 JS 命令来删除行号:
library(shiny)
library(excelR)
library(shinyjs)
jsCode <- "shinyjs.hideindex = function(params) {document.getElementById('table').jexcel.hideIndex();}"
ui <- fluidPage(
useShinyjs(),
extendShinyjs(text = jsCode, functions = "hideindex"),
excelOutput("table", height = 175),
actionButton('hide_button', 'Hide Index Column')
)
server <- function(input, output, session){
output$table <- renderExcel({
excelTable(data = head(iris),
columns = data.frame(title = names(iris),
type = c('numeric', 'numeric', 'numeric', 'numeric', 'text')))
})
onclick("hide_button", js$hideindex())
}
shinyApp(ui, server)
但我真的很想让 table 在没有索引列(行号)的情况下自动呈现。我尝试使用 observeEvents(以及许多其他东西)来观察 input$table
中的变化,但在 table 被编辑之前输入似乎不会被创建。
我修改了您的示例以使其更加独立,但是每次有人修改您的应用程序时它都会 运行(由于 observe()
函数)。
library(shiny)
library(excelR)
library(shinyjs)
jsCode <- "shinyjs.hideindex = function(params) {document.getElementById('table').jexcel.hideIndex();}"
ui <- fluidPage(
useShinyjs(),
extendShinyjs(text = jsCode, functions = "hideindex"),
excelOutput("table", height = 175),
hidden(actionButton('hide_button', 'Hide Index Column')) # Hide from start
)
server <- function(input, output, session){
output$table <- renderExcel({
excelTable(data = head(iris),
columns = data.frame(title = names(iris),
type = c('numeric', 'numeric', 'numeric', 'numeric', 'text')))
})
observe({ # Automatic click on it even if hidden
click("hide_button")
})
onclick("hide_button", js$hideindex())
}
shinyApp(ui, server)
最好只在应用启动时运行解决这个问题,但我还没有解决它。
我用 R 制作了一个闪亮的应用程序,它向用户显示一个 Excel 类似的网格。 excelR
包是 JS 包 JSpreadsheet 的包装器。这个包自动将行号放在最左边的列中。我不要他们。
通过深入研究 JavaScript,我终于弄明白了如何使用 actionButton 通过发送 JS 命令来删除行号:
library(shiny)
library(excelR)
library(shinyjs)
jsCode <- "shinyjs.hideindex = function(params) {document.getElementById('table').jexcel.hideIndex();}"
ui <- fluidPage(
useShinyjs(),
extendShinyjs(text = jsCode, functions = "hideindex"),
excelOutput("table", height = 175),
actionButton('hide_button', 'Hide Index Column')
)
server <- function(input, output, session){
output$table <- renderExcel({
excelTable(data = head(iris),
columns = data.frame(title = names(iris),
type = c('numeric', 'numeric', 'numeric', 'numeric', 'text')))
})
onclick("hide_button", js$hideindex())
}
shinyApp(ui, server)
但我真的很想让 table 在没有索引列(行号)的情况下自动呈现。我尝试使用 observeEvents(以及许多其他东西)来观察 input$table
中的变化,但在 table 被编辑之前输入似乎不会被创建。
我修改了您的示例以使其更加独立,但是每次有人修改您的应用程序时它都会 运行(由于 observe()
函数)。
library(shiny)
library(excelR)
library(shinyjs)
jsCode <- "shinyjs.hideindex = function(params) {document.getElementById('table').jexcel.hideIndex();}"
ui <- fluidPage(
useShinyjs(),
extendShinyjs(text = jsCode, functions = "hideindex"),
excelOutput("table", height = 175),
hidden(actionButton('hide_button', 'Hide Index Column')) # Hide from start
)
server <- function(input, output, session){
output$table <- renderExcel({
excelTable(data = head(iris),
columns = data.frame(title = names(iris),
type = c('numeric', 'numeric', 'numeric', 'numeric', 'text')))
})
observe({ # Automatic click on it even if hidden
click("hide_button")
})
onclick("hide_button", js$hideindex())
}
shinyApp(ui, server)
最好只在应用启动时运行解决这个问题,但我还没有解决它。