2016-10-04 5 views
0

私はRとShinyの初心者です。Shinyの例で見つかったコードを適応させたいのですが、コンソールにrunExample("05_sliders")と入力してください。textOutputsの代わりに別のタブにデータフレームを構築するには?

私は最終的に表示する変数がたくさんあるので、私は選択した変数と2つの異なるタブで、画面の右側にテーブルを取得したいと思いますが、それをすることはできません。

私は3つのタブ:Selection,GearおよびCarbを作成しました。 私はをSelectionタブに持っています。ここで私は4気筒、6気筒、8気筒のいずれかを選択しました。 私が選択したら、2つの異なるデータフレームを希望します: - 「ギア」タブに1つ、3,4,5台のギアを持つ車の数が表示され、「vs」= 0または1、 - 「炭水化物」タブの1つ私は各「炭水化物」値の車の数と各「am」値の車の数を持っていたいと思います。

しかし、それはまったく機能しませんし、なぜ私は理解できません。 もし私に助けてもらえますか?

これはコードです:

Ui.R 
library(shiny) 

shinyUI(navbarPage("MTCARS", 
       tabPanel("Sélection", 
    checkboxGroupInput("dynamic", label = "Cars", 
      choices = list("4 cylinders" = 4, "6 cylinders" = 6, 
          "8 cylinders" = 8)), 
       tabPanel("Gear", 
         mainPanel(
         tableOutput("Gear")), 

       tabPanel("Carb", 
         mainPanel(
          tableOutput("Carb") 
         )))))) 

Server.R 
library(shiny) 
# Define server logic 
function(input, output) { 

# Reactive expression to compose a data frame containing all of 
# the values 
selection_cylinder <- reactive({ 
filter(mtcars, cyl %in% input$dynamic) 
}) 
selection_cylinder <- reactive({ 
filter(mtcars, cyl %in% input$dynamic) 
}) 

# Compose tab "Gear" data frame 
data.frame(
    Name = c("Gear", 
      "vs"), 
    Value = as.character(c(input$dynamic, 
         input$dynamic), 
    stringsAsFactors=FALSE)) 

# Compose tab "Carb" data frame  
data.frame(
    Name = c("Carb", 
      "am"), 
    Value = as.character(c(input$dynamic, 
         input$dynamic), 
    stringAsFactor=FALSE)) 

# Show the values of the "Gear" data frame using an HTML table 
output$Gear <- renderTable({ 
selection_cylinder() 
}) 

# Show the values of the "Carb" data frame using an HTML table 
output$Carb <- renderTable({ 
selection_cylinder() 
}) 
} 

あなたが私に助けをしてください与えることができるので、もしそれが、全く機能をdoesnot。

私は少し失われています。

ありがとう、みなさん、本当にありがとうございます。

答えて

0

私はこれがあなたの望むものに対して機能し、動的出力のためのタブを作成すると思います。再配置する必要パネルやデータフレームの順序は、反応性の要素に引き込ま:

Server.Rを:

library(shiny) 
library(dplyr) 
# Define server logic 
function(input, output) { 

# Reactive expression to compose a data frame containing all of 
# the values 
selection_gear <- reactive({ 
x.gear=filter(mtcars, cyl == input$dynamic) 
x.table=table(x.gear$gear) 
x.vs=sum(x.gear$vs) 
# Compose tab "Gear" data frame 
data.frame(
    Name = c(unique(x.gear$gear), 
      "vs"), 
    Value = as.character(
    c(x.table, 
     x.vs), 
    stringsAsFactors=FALSE)) 
}) 
selection_carb <- reactive({ 
y.carb=filter(mtcars, cyl == input$dynamic) 
y.table=table(y.carb$carb) 
y.am=sum(y.carb$am) 
# Compose tab "Carb" data frame  
data.frame(
    Name = c(unique(y.carb$carb), 
      "am"), 
    Value = as.character(c(y.table, 
         y.am), 
    stringAsFactor=FALSE)) 
}) 

# Show the values of the "Gear" data frame using an HTML table 
output$Gear <- renderTable({ 
selection_gear() 
}) 

# Show the values of the "Carb" data frame using an HTML table 
output$Carb <- renderTable({ 
selection_carb() 
}) 
} 

ui.R

library(shiny) 

shinyUI(navbarPage("MTCARS", 
     tabsetPanel(
      tabPanel("Sélection", 
       radioButtons("dynamic", label = "Cars", 
       choices = list("4 cylinders" = 4, "6 cylinders" = 6, 
        "8 cylinders" = 8))), 
       tabPanel("Gear", 
        tableOutput("Gear") 
       ), 
       tabPanel("Carb", 
        tableOutput("Carb") 
       ) 
      ) 
     ) 
    ) 
+0

こんにちはDESCを、あなたのおかげで、I」私の目標の近くで、非常にありがとう。私が選択したシリンダー数のCarb(Carb 1,2,3,4,6,8)の各値の車の数を取得したいので、Carbタブを修正しました。あなたはこれらの価値を喜ばせるために私がどうすればいいのか知っていますか?どうもありがとうございました。 –

+0

ねえ@Mickey_NC、新しいコードは、あなたが望むロジックで動作するはずで、フィルタリングされたリストの車に基づいて表示されます。 – desc

+0

複数の入力がチェックされているときにロジックが壊れているので、 'checkboxes'ではなく' radioButtons'に切り替えました。 – desc

関連する問題