У меня есть пример блестящего приложения здесь. Он отображает редактируемые данные с использованием пакета DT
.
Чтобы разрешить загрузку всех данных, отображаемых на нескольких страницах, я использую server=FALSE
вместе с renderDT
.
То, чего я хочу достичь сейчас, это
ограничить пользователя в редактировании некоторых определенных столбцов. Следующий код, похоже, не работает.
editable = list(target = 'cell', disable = list(column = c("Sepal.Length", "Sepal.Width")))
Я хочу указать имя файла по умолчанию при экспорте в csv, что-то вроде data.csv
. Это возможно?
Очень признателен, если кто-то может помочь мне в этом. Большое спасибо.
library(shiny)
library(DT)
library(dplyr)
# UI
ui = fluidPage(
selectInput("nrows",
"select n entries",
choices = 100:150,
selected = 100,
multiple = FALSE),
DT::dataTableOutput('tbl'),
checkboxGroupInput('datacols',
label='Select Columns:',
choices= c('Sepal.Length', 'Sepal.Width', 'Petal.Length', 'Petal.Width', 'Specie'),
selected = c('Sepal.Length', 'Sepal.Width', 'Petal.Length', 'Petal.Width', 'Specie'),
inline=TRUE )
)
# SERVER
server = function(input, output) {
df = reactiveValues()
observe ({
df$dat = iris %>% .[1:input$nrows, ]
})
# render DT
output$tbl = renderDT(server=FALSE, {
datatable(df$dat %>% select(one_of(input$datacols)),
editable = list(target = 'cell', disable = list(column = c("Sepal.Length", "Sepal.Width"))), #"cell",
extensions = "Buttons",
options = list(
dom = "Bfrtip", buttons = list("csv")))
})
observeEvent(input[["tbl_cell_edit"]], {
cellinfo <- input[["tbl_cell_edit"]]
df$dat <- editData(df$dat, input[["tbl_cell_edit"]])
})
}
shinyApp(ui=ui, server = server)