2016-06-17 11 views
0

У меня проблема с R-блестящим кодом, что я должен делать, когда я хочу увидеть значение true или false в флажке? потому что, когда я пытаюсь распечатать (введите $ row1), результат будет NULL, а когда я поставлю чек в флажке, в заявлении печати нет ответа. это код:Shiny - истинное или ложное значение при установке флажка в datatable

library(shiny) 
library(DT) 
mymtcars = mtcars 
mymtcars$id = 1:nrow(mtcars) 
runApp(
    list(ui = pageWithSidebar(
    headerPanel('Examples of DataTables'), 
    sidebarPanel(

    ), 
    mainPanel(
     uiOutput("mytable") 
    ) 
) 
    , server = function(input, output, session) { 

    output$mytable = renderUI({ 
     addCheckboxButtons <- paste0('<input type="checkbox" id="row', mymtcars$id, '">',"") 
     yyy<- cbind(mymtcars[, names(mymtcars[,2:4]), drop=FALSE],Pick=addCheckboxButtons) 

     #try 
     print(input$row1) #didnt work 
     print(input$row2) #didnt work 

     #Display table with checkbox buttons 
     list(
     renderDataTable(yyy, 
        options = list(orderClasses = TRUE, 
            lengthMenu = c(5, 25, 50), 
            pageLength = 25, 
            callback = JS("function(table) { 
               table.on('change.dt', 'tr td input:checkbox', function() { 
               setTimeout(function() { 
               Shiny.onInputChange('rows', $(this).add('tr td input:checkbox:checked').parent().siblings(':last-child').map(function() { 
               return $(this).text(); 
               }).get()) 
               }, 10); 
               }); 
    }")),escape = FALSE 

        )) 
     } 
) 
    } 
    ) 
        ) 

ответ

0

См короткий пример (только для row1)

1) Вы можете использовать Shiny.bindAll

2) Вы должны видеть печать в observe

library(shiny) 
library(DT) 
mymtcars = mtcars 
mymtcars$id = 1:nrow(mtcars) 
runApp(
    list(ui = pageWithSidebar(
    headerPanel('Examples of DataTables'), 
    sidebarPanel(
     checkboxGroupInput('show_vars', 'Columns to show:', names(mymtcars), 
         selected = names(mymtcars)) 
     ,textInput("collection_txt",label="Foo") 
    ), 
    mainPanel(
     DT::dataTableOutput("mytable") 
    ) 
) 
    , server = function(input, output, session) { 

    observe({ 
     print(input$row1) 
    }) 

    output$mytable = DT::renderDataTable({ 
     #Display table with checkbox buttons 
     DT::datatable(cbind(Pick=paste0('<input type="checkbox" id="row', mymtcars$id, '" value="', mymtcars$id, '">',""), mymtcars[, input$show_vars, drop=FALSE]), 
        options = list(orderClasses = TRUE, 
            lengthMenu = c(5, 25, 50), 
            pageLength = 25 , 

            drawCallback= JS(
            'function(settings) { 
             Shiny.bindAll(this.api().table().node());}') 
        ),selection='none',escape=F) 


    }) 

    }) 
)