2015-09-20 2 views
0

Я очень новичок в R, и это моя первая попытка Shiny, поэтому, пожалуйста, простите, что может быть очевидным исправлением.Попытка извлечь определенную строку из таблицы данных в приложении Shiny

У меня есть следующий кадр данных:

 ID Bet.Total Point.Total Cash.Value 
1 2000 5,741.00 43,264.00  61.81 
2 2001 10,009.70 90,087.00  128.70 
3 2002 10,875.06 97,177.00  138.82 
4 2003 5,754.04 43,658.00  62.37 
5 2004 5,771.00 43,860.00  62.66 
6 2005 5,097.70 38,743.00  55.35 
7 2006 1,605.45 59,402.00  84.86 
8 2007 7,430.43 55,995.00  79.99 
9 2008 20,960.50 188,645.00  269.49 
10 2009 10,626.80 92,209.00  131.73 
11 2010 42,711.50 384,404.00  549.15 

Я пытаюсь создать глянцевое приложение, в котором пользователь может выбрать свой идентификатор и приложение возвращает их Bet.Total, Point.Total, и наличные деньги .Стоимость.

Вот мой ui.R код:

library(shiny) 

shinyUI(fluidPage(
    titlePanel("Bet Rewards Calculator"), 

    fluidRow(
      column(3, 
        selectizeInput("ID", choices = "ID", 
        label = h4("Rewards ID")), 
        br(), 
        actionButton("submit", "Submit")), 

      column(7, offset = 2, 
        DT::dataTableOutput("betReport"))) 

    ) 
) 

А вот мой server.R код: библиотеки (DT)

betReport <- read.csv("BetReport.csv") 

shinyServer(function(input, output) { 
    observeEvent(input$submit) 
    output$x1 <- DT::renderDataTable({betReport}) 

# print the selected indices 
    output$x2 = renderPrint({ 
      s = input$ID_rows_selected 
      if (length(s)) { 
        cat("This is your balance.") 
        cat(s, sep = ",") 
      } 
    }) 

}) 

Я пробовал различные перестановки серверного кода из простой и сложный, чтобы вернуть только соответствующую строку данных, без успеха. Когда я запускаю этот конкретный код, сбои приложения, и я получаю следующее сообщение об ошибке:
Error in exprToFunction(handlerExpr, handler.env, handler.quoted) : argument "expr_sub" is missing, with no default

Любые мысли/предложения будут высоко оценены!

+1

Есть целый ряд вопросов. В 'server.R' появляются' x1', 'x2' и' ID_rows_selected', которые не отображаются в 'ui.R'. Выход 'betReport' не определен. Неясно, где пользователь может выбрать свой идентификатор, так как аргумент 'choice'' selectInput' имеет только одно значение. – nicola

ответ

0

Я не совсем уверен в том, что вы хотите, чтобы ваше приложение это сделало. Я довольно уверен, что приведенное ниже решение не дает вам полной цели, но я думаю, что оно должно быть близко.

Ошибка: observeEvent(input$submit) в вашем файле server.R. Ему нужен второй аргумент, который запускается при срабатывании события, и вы ничего не указываете. В приведенном ниже коде я просто включил все в ваш код сервера, и я не думаю, что это то, что вы хотите, а просто для того, чтобы привести вам пример.

Кроме того, в файле ui.R вам необходимы метки для каждого элемента, соответствующего выходным элементам, вычисленным в файле server.R. Выбор также довольно скучный, так как сейчас есть только один возможный выбор (ID).

Однако следующие два файла могут быть запущены и запущены. По крайней мере, он отобразит таблицу данных и ответит на ввод.

Первый - server.R. Не забудьте включить строку для чтения в ваши данные и все такое.

shinyServer(function(input, output) { 
       observeEvent(input$submit, { 

       output$x1 <- DT::renderDataTable(betReport) 

             # print the selected indices                           
       output$x2 = renderPrint({ 
        s = input$ID_rows_selected 
        if (length(s)) { 
         cat("This is your balance.") 
         cat(s, sep = ",") 
        } else { 
      print("I shouldn't be here but the rows_selected is wrong") 
        } 
       }) 
                        }) 

      }) 

The ui.R является

library(shiny) 

shinyUI(fluidPage(
    titlePanel("Bet Rewards Calculator"), 

    fluidRow(
     column(3, 
       selectizeInput("ID", choices = "ID", 
           label = h4("Rewards ID")), 
       br(), 
       actionButton("submit", "Submit")), 

     column(7, offset = 2, 
       DT::dataTableOutput("x1"), 
       br(), 
       textOutput("x2") 
       ) 
     ) 



    ) 
     ) 
Смежные вопросы