добавить блестящий ввод и реактивы в Rhandsontable - PullRequest
0 голосов
/ 26 февраля 2019

В частности, я хочу, чтобы блестящие входные значения подавались в раскрывающиеся меню Rhandsontable.Вообще, я часто хочу использовать блестящий ввод для заполнения ячеек и столбцов в таблице, в дополнение к тому, что пользователь может редактировать таблицу rhandsontable.

Вот небольшой пример приложения, которое подчеркивает мои намерения:

library(rhandsontable)
library(shiny)

non_reactive_choices <- c('choice1', 'choice2', 'choice3', 'choice4', 'choice5', 'choice6', 'choice7', 'choice8')

DF <- data.frame(col_1 = 'original value',
             col_2 = 'original value',
             col_3 = 'original value',
             col_4 = 'original value')

ui <- fluidPage(
  sidebarLayout(
    sidebarPanel(
      selectInput('c1', label='first choice', choices = non_reactive_choices, selected = 'choice1'), 
      selectInput('c2', label='second choice', choices = non_reactive_choices, selected = 'choice2'), 
      selectInput('c3', label='third choice', choices = non_reactive_choices, selected = 'choice1'), 
      selectInput('c4', label='fourth choice', choices = non_reactive_choices, selected = 'choice2') 
    ),
    mainPanel(
      HTML('<br>'),
      HTML('<h3> The first table has pulldown of non-reactive values: it works</h3>'),
      rHandsontableOutput('hotable1'),
      HTML('<h3> The second tables pulldowns point to reactive values: it doesnt work</h3>'),
      rHandsontableOutput('hotable2'))
  )
)

server <- function(input, output, session) {

output$hotable1 <- renderRHandsontable({
rhandsontable(DF, width = 600, height = 200) %>%
  hot_col(col = 'col_1', type = "dropdown", source = non_reactive_choices) %>%
  hot_col(col = 'col_2', type = "dropdown", source = non_reactive_choices) %>%
  hot_col(col = 'col_3', type = "dropdown", source = non_reactive_choices) %>%
  hot_col(col = 'col_4', type = "dropdown", source = non_reactive_choices) 
})

  #here I combine the inputs and use them as the only choices for my dataframe dropdown columns

combined_inputs <- reactive({ 
   c(input$c1, input$c2, input$c3, input$c4)
    })


output$hotable2 <- renderRHandsontable({

    rhandsontable(DF, width = 600, height = 200) %>%
      hot_col(col = 'col_2', type = "dropdown", source = combined_inputs() ) %>%
      hot_col(col = 'col_3', type = "dropdown", source = combined_inputs() ) %>%
      hot_col(col = 'col_4', type = "dropdown", source = combined_inputs() ) 
  })

  }

shinyApp(ui, server)

Я пишу экспериментальные процедуры в Rmarkdown с использованием блестящей среды выполнения - часто в SOP входит создание 96-луночного лотка для биохимических экспериментов.,Мне нужно построить 96-луночный лоток для использования пользователем на основе его входных данных (какие образцы они используют, сколько образцов у них есть, какой анализ они хотят и т. Д.), А затем позволить им записывать значения в таблицу.Это служит как для того, чтобы помочь пользователю настроить эксперимент, так и для того, чтобы пользователь сообщал о результатах.

В целом, я хочу поместить входные / реактивные значения пользователя в rhandsontable, а не просто получать данные от rhandsontable,

1 Ответ

0 голосов
/ 12 августа 2019

Чтобы решить аналогичную проблему для динамического использования входных значений, я сделал rhandsontable реактивным с помощью триггера наблюдать за входными значениями.

...