Проверьте, является ли пустой вход в наборе пронумерованных входных объектов в R Shiny пустым - PullRequest
1 голос
/ 17 марта 2019

Допустим, я создал 10 selectInput выпадающих меню для экспорта нескольких графиков, и эти selectInputs называются "xaxis_1", "xaxis_2", ....., "xaxis_10"

для одного 1 я могу написать: if(!is.null(input$xaxis_1)) { .... do stuff }, чтобы остановить запуск экспорта, когда пользователь еще не ввел имя, и нажимает кнопку отправки, чтобы избежать сбоев.

Немного более общий, вы можете проверить это:

if(!is.null(input[[paste('xaxis', i, sep = '_')]])) { ...}

как вы можете написать это элегантно, чтобы 1 строка кода проверяла, является ли ЛЮБОЙ вход 1:10 [[...]] пустым, т. Е. NULL?

Число входных данных зависит от того, сколько графиков пользователь хочет экспортировать для каждого файла, поэтому все построено со структурой lapply(1:input$nrofplots, function(i) { .... } renderUI, и оператор my должен иметь такую ​​же гибкость, как 1: n

В ситуации, подобной приведенной на изображении ниже, нажатие Initiate export должно дать sweetalert (с учетом этого), говорящее, что по крайней мере 1 значение отсутствует

enter image description here

1 Ответ

1 голос
/ 17 марта 2019

Вот фрагмент, который я использовал на стороне пользовательского интерфейса, чтобы проверить вводимые пользователем данные.

library(shiny)
library(shinyjs)

ui <- fluidPage(
 useShinyjs(),  # Set up shinyjs
 numericInput('axis1','Val 1',1),
 numericInput('axis2','Val 2',1),
 numericInput('axis3','Val 3',1),
 actionButton('Go','Plot')
)

server <- function(input, output, session) {
  #Try 1, space, AAA and check what shiny will return
  observe(print(input$axis1))
  observe({
    All_Inputs <- vapply(paste0('axis',1:3),
                                function(x){isTruthy(input[[x]])},
                                logical(1))
    All_InputsCP <- all(All_Inputs)
    shinyjs::toggleState(id="Go", condition = All_InputsCP) #This is to make the button Go able or disable according to condition All_InputsCP #
  })
}

shinyApp(ui, server)

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...