r - Radio Buttons on Shiny Datatable, with data.frame / data.table -


pretty copy paste this example (which, assume, supersedes of other answers on so) except i'm trying use data.table instead of matrix. i'm unable figure out why isn't working.

library(shiny) library(dt) shinyapp(   ui = fluidpage(     title = 'radio buttons in table',     dt::datatableoutput('foo'),     verbatimtextoutput('sel')   ),   server = function(input, output, session) {      m = data.table(       month1 = month.abb,        = '1',        b = '2',        c = '3',        qwe = runif(12)     )       m[, := sprintf(         '<input type="radio" name="%s" value="%s"/>',         month1, m[, a]       )]       m[, b := sprintf(         '<input type="radio" name="%s" value="%s"/>',         month1, m[, b]       )]       m[, c := sprintf(         '<input type="radio" name="%s" value="%s"/>',         month1, m[, c]       )]      output$foo = dt::renderdatatable(       m, escape = false, selection = 'none', server = false,       options = list(dom = 't', paging = false, ordering = false),       callback = js("table.rows().every(function(i, tab, row) {           var $this = $(this.node());           $this.attr('id', this.data()[0]);           $this.addclass('shiny-input-radiogroup');         });         shiny.unbindall(table.table().node());         shiny.bindall(table.table().node());")     )     output$sel = renderprint({       str(sapply(month.abb, function(i) input[[i]]))     })   } ) 

issue rownames. have column of rownames gets shiny attributes added it, isn't radio buttons it's text breaks (although should throw error).

here working version:

library(shiny) library(dt) shinyapp(   ui = fluidpage(     title = 'radio buttons in table',     dt::datatableoutput('foo'),     verbatimtextoutput('sel')   ),   server = function(input, output, session) {      m = data.table(       month1 = month.abb,       = '1',       b = '2',       c = '3',       qwe = runif(12)     )     m[, := sprintf(       '<input type="radio" name="%s" value="%s"/>',       month1, m[, a]     )]     m[, b := sprintf(       '<input type="radio" name="%s" value="%s"/>',       month1, m[, b]     )]     m[, c := sprintf(       '<input type="radio" name="%s" value="%s"/>',       month1, m[, c]     )]      output$foo = dt::renderdatatable(       m, escape = false, selection = 'none', server = false, rownames=false,       options = list(dom = 't', paging = false, ordering = false),       callback = js("table.rows().every(function(i, tab, row) {                     var $this = $(this.node());                     $this.attr('id', this.data()[0]);                     $this.addclass('shiny-input-radiogroup');   });                     shiny.unbindall(table.table().node());                     shiny.bindall(table.table().node());")     )     output$sel = renderprint({       str(sapply(month.abb, function(i) input[[i]]))     })     } ) 

Comments

Popular posts from this blog

java - inputmismatch exception -

c - zlib and gdi32 with OpenSSL? -

Formatting string according to pattern without regex in php -