When I use updateSelectizeInput with server=T, it triggers an infinite loop. Specifically, when I choose cdr3seqnt or cdr3seqaa. My code is
update_flag <- reactiveVal(TRUE)
observeEvent(c(input$vhits,input$dhits,input$jhits,input$cdr3seqnt,input$cdr3seqaa,input$disease1,input$tissue1,input$selection), {
if (!update_flag()) return() # Prevent infinite loop if we're updating
update_flag(FALSE)
df <- file_data$data
`%!in%` <- Negate(`%in%`)
if (input$disease1 %!in% c('','\a')) {
df <- subset(df, disease==input$disease1)
}
if (input$tissue1 %!in% c('','\a')) {
df <- subset(df, tissue.fine==input$tissue1)
}
if (input$vhits %!in% c('','\a')) {
df <- subset(df, v==input$vhits)
}
if (input$dhits %!in% c('','\a')) {
df <- subset(df, d==input$dhits)
}
if (input$jhits %!in% c('','\a')) {
df <- subset(df, j==input$jhits)
}
if (input$cdr3seqnt %!in% c('','\a')) {
df <- df[stri_detect_fixed(df$cdr3nt, input$cdr3seqnt),]
}
if (input$cdr3seqaa %!in% c('','\a')) {
df <- df[stri_detect_fixed(df$cdr3aa, input$cdr3seqaa),]
}
file_data2$data <- df
isolate({
updateSelectInput(session,"disease1",choices = c("",sort(unique(df$disease))),selected = isolate(input$disease1))
updateSelectInput(session,"tissue1",choices = c("",sort(unique(df$tissue.fine))),selected = isolate(input$tissue1))
updateSelectInput(session, "vhits", choices = c('',sort(unique(df$v))), selected = isolate(input$vhits))
updateSelectInput(session, "dhits", choices = c('',sort(unique(df$d))), selected = isolate(input$dhits))
updateSelectInput(session, "jhits", choices = c('',sort(unique(df$j))), selected = isolate(input$jhits))
updateSelectizeInput(session, "cdr3seqnt", choices = c('',sort(unique(df$cdr3nt))), selected = isolate(input$cdr3seqnt), server=T)
updateSelectizeInput(session, "cdr3seqaa", choices = c('',sort(unique(df$cdr3aa))), selected = isolate(input$cdr3seqaa), server=T)
})
update_flag(TRUE) })
Any idea/s would be much appreciated.