Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 有条件地更新闪亮的数据表单元格。我的代码有效。这是一种方法吗;接近声音?_R_Shiny_Dt - Fatal编程技术网

R 有条件地更新闪亮的数据表单元格。我的代码有效。这是一种方法吗;接近声音?

R 有条件地更新闪亮的数据表单元格。我的代码有效。这是一种方法吗;接近声音?,r,shiny,dt,R,Shiny,Dt,问题: Session info -------------------------------------------------------------------------------------------------------- setting value version R version 3.3.1 (2016-06-21) system x86_64, linux-gnu ui R

问题:

Session info --------------------------------------------------------------------------------------------------------
 setting  value                       
 version  R version 3.3.1 (2016-06-21)
 system   x86_64, linux-gnu           
 ui       RStudio (0.99.903)          
 language (EN)                        
 collate  en_US.UTF-8                 
 tz       posixrules                  
 date     2017-06-13                  

Packages ------------------------------------------------------------------------------------------------------------
 package        * version date       source                               
 assertthat       0.2.0   2017-04-11 cran (@0.2.0)                        
 bitops           1.0-6   2013-08-17 CRAN (R 3.3.1)                       
 Cairo            1.5-9   2015-09-26 CRAN (R 3.3.1)                       
 chron            2.3-47  2015-06-24 CRAN (R 3.3.1)                       
 colorspace       1.2-6   2015-03-11 CRAN (R 3.3.1)                       
 crosstalk        1.0.0   2016-12-21 cran (@1.0.0)                        
 data.table     * 1.9.6   2015-09-19 CRAN (R 3.3.1)                       
 DBI              0.5-1   2016-09-10 CRAN (R 3.3.1)                       
 devtools         1.12.0  2016-06-24 CRAN (R 3.3.1)                       
 digest           0.6.12  2017-01-27 cran (@0.6.12)                       
 dplyr            0.5.0   2016-06-24 CRAN (R 3.3.1)                       
 DT             * 0.2.11  2017-05-30 Github (rstudio/DT@e554560)          
 geosphere      * 1.5-5   2016-06-15 CRAN (R 3.3.1)                       
 ggmap          * 2.7     2017-01-17 Github (dkahle/ggmap@c6b7579)        
 ggplot2        * 2.2.0   2017-03-27 Github (hadley/ggplot2@0cf7c56)      
 gtable           0.2.0   2016-02-26 CRAN (R 3.3.1)                       
 htmltools        0.3.6   2017-04-28 cran (@0.3.6)                        
 htmlwidgets      0.9     2017-05-19 Github (ramnathv/htmlwidgets@387508c)
 httpuv           1.3.3   2015-08-04 CRAN (R 3.3.1)                       
 jpeg             0.1-8   2014-01-23 CRAN (R 3.3.1)                       
 jsonlite         1.4     2017-04-08 cran (@1.4)                          
 labeling         0.3     2014-08-23 CRAN (R 3.3.1)                       
 lattice          0.20-34 2016-09-06 CRAN (R 3.3.1)                       
 lazyeval         0.2.0   2016-06-12 CRAN (R 3.3.1)                       
 magrittr         1.5     2014-11-22 CRAN (R 3.3.1)                       
 mapproj          1.2-4   2015-08-03 CRAN (R 3.3.1)                       
 maps           * 3.1.1   2016-07-27 CRAN (R 3.3.1)                       
 markdown       * 0.8     2017-04-20 cran (@0.8)                          
 memoise          1.0.0   2016-01-29 CRAN (R 3.3.1)                       
 mime             0.5     2016-07-07 CRAN (R 3.3.1)                       
 munsell          0.4.3   2016-02-13 CRAN (R 3.3.1)                       
 plyr             1.8.4   2016-06-08 CRAN (R 3.3.1)                       
 png              0.1-7   2013-12-03 CRAN (R 3.3.1)                       
 proto            1.0.0   2016-10-29 cran (@1.0.0)                        
 R6               2.2.1   2017-05-10 cran (@2.2.1)                        
 Rcpp             0.12.10 2017-03-19 cran (@0.12.10)                      
 reshape2         1.4.2   2016-10-22 cran (@1.4.2)                        
 RgoogleMaps      1.4.1   2016-09-18 CRAN (R 3.3.1)                       
 rhandsontable  * 0.3.4   2016-11-03 CRAN (R 3.3.1)                       
 rjson            0.2.15  2014-11-03 CRAN (R 3.3.1)                       
 rlang            0.1.1   2017-05-18 cran (@0.1.1)                        
 rstudioapi       0.6     2016-06-27 CRAN (R 3.3.1)                       
 scales         * 0.4.1   2016-11-09 CRAN (R 3.3.1)                       
 shiny          * 1.0.3   2017-04-26 cran (@1.0.3)                        
 shinydashboard * 0.5.3   2016-09-20 CRAN (R 3.3.1)                       
 sp             * 1.2-3   2016-04-14 CRAN (R 3.3.1)                       
 stringdist     * 0.9.4.4 2016-12-16 CRAN (R 3.3.1)                       
 stringi          1.1.5   2017-04-07 cran (@1.1.5)                        
 stringr        * 1.2.0   2017-02-18 CRAN (R 3.3.1)                       
 tibble           1.3.1   2017-05-17 cran (@1.3.1)                        
 withr            1.0.2   2016-06-20 CRAN (R 3.3.1)                       
 xtable           1.8-2   2016-02-05 CRAN (R 3.3.1)                       
 yaml             2.1.14  2016-11-12 cran (@2.1.14)                       
> 
要有条件地更新数据表单元格,我的方法是使用observeEvent,输入$dt_rows_selected并替换数据。请参阅下面的最小可复制代码

这种做法合理吗?有效率的在renderPrint或其他东西中替换数据是更好的方法吗?下面的最小可复制代码有效。我还不清楚内部发生的细微差别

目标:

我的目标是有条件地更新选定的数据表单元格。更具体地说,当a)“destination.column”中包含的值为空(第5、10、15行…)和b)用户以交互方式单击某一行时,有条件地更新“destination.column”的内容

背景:

Session info --------------------------------------------------------------------------------------------------------
 setting  value                       
 version  R version 3.3.1 (2016-06-21)
 system   x86_64, linux-gnu           
 ui       RStudio (0.99.903)          
 language (EN)                        
 collate  en_US.UTF-8                 
 tz       posixrules                  
 date     2017-06-13                  

Packages ------------------------------------------------------------------------------------------------------------
 package        * version date       source                               
 assertthat       0.2.0   2017-04-11 cran (@0.2.0)                        
 bitops           1.0-6   2013-08-17 CRAN (R 3.3.1)                       
 Cairo            1.5-9   2015-09-26 CRAN (R 3.3.1)                       
 chron            2.3-47  2015-06-24 CRAN (R 3.3.1)                       
 colorspace       1.2-6   2015-03-11 CRAN (R 3.3.1)                       
 crosstalk        1.0.0   2016-12-21 cran (@1.0.0)                        
 data.table     * 1.9.6   2015-09-19 CRAN (R 3.3.1)                       
 DBI              0.5-1   2016-09-10 CRAN (R 3.3.1)                       
 devtools         1.12.0  2016-06-24 CRAN (R 3.3.1)                       
 digest           0.6.12  2017-01-27 cran (@0.6.12)                       
 dplyr            0.5.0   2016-06-24 CRAN (R 3.3.1)                       
 DT             * 0.2.11  2017-05-30 Github (rstudio/DT@e554560)          
 geosphere      * 1.5-5   2016-06-15 CRAN (R 3.3.1)                       
 ggmap          * 2.7     2017-01-17 Github (dkahle/ggmap@c6b7579)        
 ggplot2        * 2.2.0   2017-03-27 Github (hadley/ggplot2@0cf7c56)      
 gtable           0.2.0   2016-02-26 CRAN (R 3.3.1)                       
 htmltools        0.3.6   2017-04-28 cran (@0.3.6)                        
 htmlwidgets      0.9     2017-05-19 Github (ramnathv/htmlwidgets@387508c)
 httpuv           1.3.3   2015-08-04 CRAN (R 3.3.1)                       
 jpeg             0.1-8   2014-01-23 CRAN (R 3.3.1)                       
 jsonlite         1.4     2017-04-08 cran (@1.4)                          
 labeling         0.3     2014-08-23 CRAN (R 3.3.1)                       
 lattice          0.20-34 2016-09-06 CRAN (R 3.3.1)                       
 lazyeval         0.2.0   2016-06-12 CRAN (R 3.3.1)                       
 magrittr         1.5     2014-11-22 CRAN (R 3.3.1)                       
 mapproj          1.2-4   2015-08-03 CRAN (R 3.3.1)                       
 maps           * 3.1.1   2016-07-27 CRAN (R 3.3.1)                       
 markdown       * 0.8     2017-04-20 cran (@0.8)                          
 memoise          1.0.0   2016-01-29 CRAN (R 3.3.1)                       
 mime             0.5     2016-07-07 CRAN (R 3.3.1)                       
 munsell          0.4.3   2016-02-13 CRAN (R 3.3.1)                       
 plyr             1.8.4   2016-06-08 CRAN (R 3.3.1)                       
 png              0.1-7   2013-12-03 CRAN (R 3.3.1)                       
 proto            1.0.0   2016-10-29 cran (@1.0.0)                        
 R6               2.2.1   2017-05-10 cran (@2.2.1)                        
 Rcpp             0.12.10 2017-03-19 cran (@0.12.10)                      
 reshape2         1.4.2   2016-10-22 cran (@1.4.2)                        
 RgoogleMaps      1.4.1   2016-09-18 CRAN (R 3.3.1)                       
 rhandsontable  * 0.3.4   2016-11-03 CRAN (R 3.3.1)                       
 rjson            0.2.15  2014-11-03 CRAN (R 3.3.1)                       
 rlang            0.1.1   2017-05-18 cran (@0.1.1)                        
 rstudioapi       0.6     2016-06-27 CRAN (R 3.3.1)                       
 scales         * 0.4.1   2016-11-09 CRAN (R 3.3.1)                       
 shiny          * 1.0.3   2017-04-26 cran (@1.0.3)                        
 shinydashboard * 0.5.3   2016-09-20 CRAN (R 3.3.1)                       
 sp             * 1.2-3   2016-04-14 CRAN (R 3.3.1)                       
 stringdist     * 0.9.4.4 2016-12-16 CRAN (R 3.3.1)                       
 stringi          1.1.5   2017-04-07 cran (@1.1.5)                        
 stringr        * 1.2.0   2017-02-18 CRAN (R 3.3.1)                       
 tibble           1.3.1   2017-05-17 cran (@1.3.1)                        
 withr            1.0.2   2016-06-20 CRAN (R 3.3.1)                       
 xtable           1.8-2   2016-02-05 CRAN (R 3.3.1)                       
 yaml             2.1.14  2016-11-12 cran (@2.1.14)                       
> 
数据量很大。data.table可能包含约100k行,而修改的数量预计为数百行,甚至数千行。因此,我的目标是构建一个简化且易于使用的界面/体验

选择研究

我将继续学习包括:

  • 这是一个仪表板示例。这很酷,但是修改的弹出质量在我的高数据量环境中不起作用
  • 如果我理解这个示例,建议将replaceData语句绑定到操作按钮
我继续一步一步地浏览reactlog,以了解Shiny正在采取的内部步骤

非常感谢您的想法和指导

library (shiny)
library (data.table)
library (DT)

options (shiny.reactlog = T)

row.cnt <- 10000
dt <- data.table (row.number = 1:row.cnt                                                           # create dummy table
                  , destination.column = rep (c('a','b','c','d',''),times=row.cnt/5)
                  , source.column = rep (c('','','','','e'),times=row.cnt/5)
                  , score = round (runif(1:row.cnt),4))

ui <- fluidPage( h2 ('Minimal code to modify contents of a datatable')
                 , hr ()
                 , fluidRow ( DT::dataTableOutput("dt") )
                 , hr ()
                 , fluidRow (
                   column (width = 2
                           , actionButton ('select.curr.page', 'Select Current Page')
                           , br() , br()
                           , actionButton ('select.clear', 'Clear All Selections') )
                   , column (width = 10, verbatimTextOutput ('selected.rows') ) )
                 , hr () 

)

server <- function(input, output){

  output$dt <- DT::renderDataTable({
    DT::datatable( dt
                   , filter = 'bottom'
                   , selection = "multi"
                   # , server = TRUE
                   , options = list(lengthMenu = list(c(1, 5, 10, 15, 25, 50, -1), c('1','5', '10', '15', 25, 50,  'All')), pageLength = 15)
    )
  })

  output$selected.rows = renderPrint({

    s = input$dt_rows_selected
    cell.clicked <<- input$dt_cell_clicked
    if (length(s)) {
      cat('These rows were selected:\n\n')
      cat(s, sep = ', ')
      cat ('\n\n')
      cat ('cell.clicked$row-',cell.clicked$row,'\n\n')
      cat (str(cell.clicked),'\n', sep=',')

    }
  })

  dt.proxy <- dataTableProxy ('dt')

  observeEvent ( input$dt_rows_selected, {
    if ( dt [ cell.clicked$row, destination.column ] == '' )  {
      dt [ cell.clicked$row, destination.column := source.column ]
      replaceData(dt.proxy,dt,resetPaging=F,clearSelection='none')
    }
  })

  observeEvent (input$select.curr.page, {
    cat ('select.curr.page',input$dt_rows_current,sep='-')
    dt.proxy %>% selectRows ( sort (unique (c(input$dt_rows_current,input$dt_rows_selected))))
  })  

  observeEvent (input$select.clear, {
    dt.proxy %>% selectRows ( NULL )
  })  

}

shinyApp(ui, server)

你有没有找到解决这个问题的办法?我自己也在尝试解决一些类似的问题。你有没有找到解决这个问题的办法?我试图自己解决一些类似的问题。