两天前,我遇到了有关Shiny
曲目更改的采访问题。我对这个词并不熟悉。在excel中,我们可以在任何行中编辑实体,也可以保存它。在ShinyUI中,当我们显示某些数据时,是否有任何规定可以在显示器本身(Shiny table
)中修改数字或文本并可以将其保存在同一显示器中?另外,我还将有一个历史记录,说明以前的值是什么以及变更的值是什么。
我需要了解更多有关此主题的信息,请引导我获取一些有关Shiny Track-Change的良好教程链接。
面试官告诉我,它在Shiny中称为“ Track Change
”。我搜索了google,但找不到相同的令人满意的教程。
我有一个演示闪亮的应用程序[How to edit an uploaded data in 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”的一些不错的教程链接来指导我。