2016-05-18 13 views
0

私が構築している光っているアプリケーションでは、プライマリデータフレームのサブセットであるデータフレームが2つあります。そのデータのデータはデータテーブルを使ってレンダリングしています。 thisの例を引用して、私は2つのデータテーブル出力と1つのテキスト出力を作成しました。データテーブルとテキスト出力は問題なくレンダリングされますが、最初のデータテーブルからの入力を受け取る2番目のデータテーブルはエラーをスローしています。 2つのデータフレームの再現可能な例は以下の通りである。最初のものはdfとしてタグ付け及びdfの再現データdfaデータテーブルの行選択によるレンダリング - シャイニー

として第2れる:

structure(list(MediaType = c("BILLBOARDS", "BILLBOARDS", "MALL FACADES", 
"BUS SHELTER", "WALL GRAPHICS"), Rental = c(62500, 160000, 240000, 
112000, 210000), Sizeinsq = c(800, 200, 200, 108, 400)), .Names = c("MediaType", 
"Rental", "Sizeinsq"), row.names = c("BrandA", "BrandB", "BrandC", 
"BrandD", "BrandE"), class = "data.frame") 

第二のデータフレームdfa

structure(list(Client = c("BrandA", "BrandB", "BrandC", "BrandD", 
"BrandE"), MediaType = c("BILLBOARDS", "BILLBOARDS", "MALL FACADES", 
"BUS SHELTER", "WALL GRAPHICS"), Rental = c(62500, 160000, 240000, 
112000, 210000), Sizeinsq = c(800, 200, 200, 108, 400)), .Names = c("Client", 
"MediaType", "Rental", "Sizeinsq"), row.names = c(NA, 5L), class = "data.frame") 

コード:

library(shiny) 
runApp(list(
    ui = bootstrapPage(
     dataTableOutput("x1"), 
     verbatimTextOutput("t1"), 
     dataTableOutput("x2") 
    ), 
    server = function(input, output){ 
     output$x1 = renderDataTable(
      df, server = TRUE, rownames = TRUE 
     ) 

     output$t1 <- renderPrint({ 
      s <- input$x1_rows_selected 
      if(length(s)){ 
       cat(s) 
      } 
     }) 

     output$x2 <- renderDataTable(
      s <- input$x1_rows_selected 
      if(length(s)){ 
      k <- dfa[dfa$Client %in% s, ] 
      k 
      } 
      ) 

    } 
)) 

Ei私はかっこのエラーまたはいくつかの "args"不一致のエラーを取得しています。

最初のデータテーブルとテキスト出力は完全にレンダリングされますが、2番目のデータテーブルは完全にレンダリングされません。私はrenderDataTableの前にDTを使用するなどの多くのオプションを試しました(もちろん、ライブラリ(DT)を追加した後)。私はverbatimTextOutputをtextInputに変換しようとしましたが、第2のデータテーブルをレンダリングするためにこの入力を取ることができるという前提で行いました。私はtextOutputオプションを使ってみましたが、値を取ろうとしました。しかし誰も助けにはならない。

基本的には、最初のデータフレームの行名に基づいて2番目のデータフレームをサブセット化する必要があります。

私のセッション情報:

R version 3.2.0 (2015-04-16) 
Platform: x86_64-apple-darwin13.4.0 (64-bit) 
Running under: OS X 10.10.3 (Yosemite) 

locale: 
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8 

attached base packages: 
[1] stats  graphics grDevices utils  datasets methods base  

other attached packages: 
[1] htmltools_0.3  leaflet_1.0.0  data.table_1.9.4  
[4] markdown_0.7.7  reshape2_1.4.1  lazyeval_0.1.10  
[7] tidyr_0.3.1   zoo_1.7-12   shinyjs_0.6   
[10] shinyBS_0.61   shinydashboard_0.5.1 plotly_3.4.13  
[13] ggplot2_2.1.0  dplyr_0.4.3   DT_0.1    
[16] shiny_0.13.2   RMySQL_0.10.8  DBI_0.3.1   

loaded via a namespace (and not attached): 
[1] Rcpp_0.12.3  plyr_1.8.3  base64enc_0.1-3 viridis_0.3.2 
[5] tools_3.2.0  digest_0.6.9  jsonlite_0.9.19 gtable_0.1.2  
[9] lattice_0.20-33 yaml_2.1.13  parallel_3.2.0 gridExtra_2.0.0 
[13] stringr_1.0.0 httr_1.1.0  htmlwidgets_0.5 grid_3.2.0  
[17] R6_2.1.2   magrittr_1.5  scales_0.3.0  assertthat_0.1 
[21] mime_0.4   xtable_1.7-4  colorspace_1.2-6 httpuv_1.3.3  
[25] stringi_1.0-1 miniUI_0.1.1  munsell_0.4.3 chron_2.3-47  

答えて

1

あなたは、コードのこの部分で{}を追加するのを忘れ:

output$x2 <- renderDataTable({ # added { 
     s <- input$x1_rows_selected 
     if(length(s)){ 
     k <- dfa[dfa$Client %in% s, ] 
     k 
     } 
    }) # added } 

全コード:

を編集:私はddedライブラリDT


df <- structure(list(MediaType = c("BILLBOARDS", "BILLBOARDS", "MALL FACADES", 
            "BUS SHELTER", "WALL GRAPHICS"), 
         Rental = c(62500, 160000, 240000, 112000, 210000), 
         Sizeinsq = c(800, 200, 200, 108, 400)), 
         .Names = c("MediaType", "Rental", "Sizeinsq"), 
         row.names = c("BrandA", "BrandB", "BrandC", "BrandD", "BrandE"), 
         class = "data.frame") 


dfa <- structure(list(Client = c("BrandA", "BrandB", "BrandC", "BrandD", "BrandE"), 
         MediaType = c("BILLBOARDS", "BILLBOARDS", "MALL FACADES", 
            "BUS SHELTER", "WALL GRAPHICS"), 
         Rental = c(62500, 160000, 240000, 112000, 210000), 
         Sizeinsq = c(800, 200, 200, 108, 400)), 
         .Names = c("Client", "MediaType", "Rental", "Sizeinsq"), 
         row.names = c(NA, 5L), class = "data.frame") 



library(shiny) 
library(DT) 
runApp(list(
    ui = bootstrapPage(
    dataTableOutput("x1"), 
    verbatimTextOutput("t1"), 
    dataTableOutput("x2") 
), 
    server = function(input, output){ 
    output$x1 = renderDataTable(
     df, server = TRUE, rownames = TRUE 
    ) 

    output$t1 <- renderPrint({ 
     s <- input$x1_rows_selected 
     if(length(s)){ 
     cat(s) 
     } 
    }) 

    output$x2 <- renderDataTable({ # added { 
     s <- input$x1_rows_selected 
     if(length(s)){ 
     k <- dfa[dfa$Client %in% s, ] 
     k 
     } 
    }) # added } 

    } 
)) 
+0

感謝します。私が使用したすべての様々な順列と組み合わせのうち、私はかっこを使用したと確信していますが、なぜそれがうまくいかなかったのかを確認してください。もう一度、ありがとう。これで私の問題は解決しました。 – popeye

関連する問題