Два дня назад я столкнулся с вопросом об интервью по поводу Shiny
смены трека. Я не был знаком с этим термином. В Excel мы можем редактировать все записи в любой строке и сохранять их. В ShinyUI, когда мы отображаем некоторые данные, есть ли какое-либо положение, что на самом дисплее (Shiny table
) я могу изменить число или текст и сохранить его на том же самом дисплее? Также у меня будет история того, что было предыдущими значениями и каково значение cahnged.
Мне нужно больше узнать по этой теме, пожалуйста, дайте мне несколько хороших ссылок на учебники для Shiny Track-Change.
Интервьюер сказал мне, что в Шины это называется 'Track Change
'. Я искал Google, но не мог найти удовлетворительное руководство по тому же.
У меня есть демонстрационное блестящее приложение [ Как редактировать загруженные данные в rshiny , где я могу видеть загруженные данные. Проверьте изображение. В Shiny, какие изменения мне нужно внести в UI
& Server
, чтобы иметь возможность редактирования, например, изменение дорожки?
library(shiny)
library(readxl)
ui = fluidPage(
titlePanel("HEllo world"),
sidebarLayout(
sidebarPanel(
fileInput('file1', 'Choose xlsx file',
accept = c(".xlsx")),
actionButton("go", "update"),
numericInput('NewVal', 'Enter new Frequency',NULL),
numericInput('NewExp', 'Enter new Exposure',NULL),
# Download button (goes with download handler below)
# Use if desire is to save at press of button
downloadButton("save", "Download")
),
mainPanel(
textInput('ID', 'Enter ID'),
dataTableOutput('contents')
)
)
)
server = function(input,output){
# Reactive value to save input data frame for use elsewhere
original <- reactiveValues()
observeEvent(input$file1, {
theFile <- input$file1
if(is.null(theFile)) {
original$oldData <- NULL
} else {
original$oldData <- read_excel(theFile$datapath, 1)
}
})
observeEvent(input$go, {
original$newData <- original$oldData
if(input$ID !="") {
for(i in 1:nrow(original$oldData)){
if(input$ID == original$oldData$'ID'[i]){
if(!is.na(input$NewVal)){
original$newData$'Frequency'[i] <- input$NewVal
}
if(!is.na(input$NewExp)){
original$newData$'Exposure'[i] <- input$NewExp
}
original$newData$'Value'[i] <- (original$newData$'Exposure'[i]*
original$newData$'Frequency'[i])
}
}
original$oldData<-original$newData
}
})
output$contents <- renderDataTable({
if(!is.null(original$newData)) {
original$newData}
else {
original$oldData
}
})
### Use this code below if desired saving is through download button
# Server code for download button
output$save <- downloadHandler(
filename = function() {
paste0("newData - ", Sys.Date(), ".csv")
},
content = function(con) {
if (!is.null(original$newData)) {
dataSave <- original$newData
} else {
dataSave <- original$oldData
}
con <- ## Desired save location... could just use `getwd()` to
# save to working directory
write.csv(dataSave, con)
}
)
}
shinyApp(ui = ui, server = server)
Мне нужно больше узнать по этой теме, пожалуйста, дайте мне несколько хороших ссылок на учебники для Shiny Track-Change.