如何解决条件默认值可在Shiny中
问题:在下面的“闪亮”应用中,我想更改并通过rhandsontable将新行插入到以下数据中:
data.frame(car = c("Opel","Nissan","Opel","VW"),location = c("Ruesselsheim","Frankreich","Ruesselsheim","Wolfsburg"))
- 例如,如果我将
car == Opel
更改为car == VW
,则位置将从吕塞尔斯海姆更改为沃尔夫斯堡。 - 如果我插入新行,例如用
car == Opel
填充它,那么在输入汽车信息后,位置应直接位于吕塞尔斯海姆
问题:如何有条件地更改单元格值并定义条件默认值?
尝试::hot_col
具有默认参数,但仅接受字符串,而不接受条件。通过观察者跟踪变化似乎并不是最好的方法。
有关如何解决此问题的任何想法?非常感谢!
library(shiny)
library(rhandsontable)
ui = shinyUI(fluidPage(
titlePanel("Handsontable"),sidebarLayout(
sidebarPanel(
rHandsontableOutput("hot")
),mainPanel(
verbatimtextoutput("debug")
)
)
))
server = function(input,output) {
data <- reactive({
data.frame(car = c("Opel","Wolfsburg"))
})
output$hot <- renderRHandsontable({
DF <- data()
rhandsontable(DF,useTypes = FALSE,selectCallback = TRUE)
})
### DEBUG
output$debug <- renderPrint({
req(input$hot)
input$hot$changes
})
}
shinyApp(ui = ui,server = server)
解决方法
可以通过使用reactiveVal
和查找表将当前选择与以下内容合并来实现所需的行为:
library(shiny)
library(rhandsontable)
ui = shinyUI(fluidPage(
titlePanel("Handsontable"),sidebarLayout(
sidebarPanel(
rHandsontableOutput("hot")
),mainPanel(
verbatimTextOutput("debug")
)
)
))
server = function(input,output) {
LUT_DF <- data.frame(car = c("Opel","Nissan","VW"),location = c("Ruesselsheim","Frankreich","Wolfsburg"))
data <- reactiveVal(data.frame(car = c("Opel","Opel","Ruesselsheim","Wolfsburg")))
output$hot <- renderRHandsontable({
rhandsontable(data(),useTypes = FALSE,selectCallback = TRUE)
})
observeEvent(input$hot,{
data(merge(LUT_DF,hot_to_r(input$hot)[1],by = "car"))
},ignoreInit = TRUE)
}
shinyApp(ui = ui,server = server)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。