2017-01-17 9 views
0

RスクリプトをR Shiny Appとして実行しようとしています。 uiから、ユーザーは.csvファイルをアップロードし、4つの数値変数を入力します。これらの変数は関数に渡され、最終的なテーブルが生成されます。このfinal_tableはShiny Appに出力として表示されるべきです。現在、変数は関数に渡されていますが、最終的な表にはなりません。私はRShinyと新しいです、この仕事をする上であなたの助けに感謝します。RShinyで長いRスクリプトを関数として実行し、そのソリューションをuiに表示する方法は?

my_function.Rは、関数my_function()を含むスクリプトファイルです。これは、実際には、使いやすさのために関数に圧縮された500行のRスクリプトです。

my_function <- function(tbl_load, ts_freq, ts_start_yr, ts_start_month, seasonal_cat) { 
    .......... 
    return(collect_ALL_final_fair) 
} 

ui.R

library(shiny) 
fluidPage(
titlePanel("Elasticity Tool"), 
sidebarLayout(
sidebarPanel(
    fileInput('file1', 'Choose datatable csv file', accept=c('.csv')), 

    numericInput("ts_freq", "Time series frequency:", 52, min = 1, max = 100), 
    numericInput("ts_start_yr", "Starting year:", 2013, min = 1990, max = 2030), 
    numericInput("ts_start_month", "Starting month:", 3, min = 1, max = 12), 
    numericInput("seasonal_cat", "Seasonal Category", 0, min = 0, max = 1), 
    br(), 

    actionButton("goButton", label = "Run tool"), 
    br()  
), 

mainPanel(
    tabsetPanel(type = 'tabs', 
       tabPanel("Output", tableOutput('contents2')) 
    ) 
) 
) 
) 

server.R

library(shiny) 
library(datasets) 
source("my_function.R") 
#packages 
library("glmnet") 
library(Matrix) 
library(dplyr) 
library(forecast) 
library(zoo) 
library(stats) 
library(car) 
options(scipen = 999) 

shinyServer(function(input, output) { 

observeEvent(input$goButton, { 
    tbl_load <- input$file1 
    ts_freq <- input$ts_freq 
    ts_start_yr <- input$ts_start_yr 
    ts_start_month <- input$ts_start_month 
    seasonal_cat <- input$seasonal_cat 
    output$contents2 <- renderDataTable({ 
    my_function(tbl_load, ts_freq, ts_start_yr, ts_start_month, seasonal_cat) 
    }) 
    }) 
    }) 
+0

てみ 'ソース( "my_function.R"、ローカル= TRUE)'や 'ソース( "あなたの機能location.r"、ローカル= TRUE)あなたの助けのための' –

答えて

1

あなたの出力レンダリングペアがミスマッチしているように思えます。あなたが定期的にテーブルを使用する場合は、持っている必要があります。

# ui 
tableOutput('contents2') 

# server 
output$contents2 <- renderTable({}) 

をあなたがデータテーブルを使用したい場合は、あなたが持っている必要があります。

# ui 
DT::dataTableOutput('contents2') 

# server 
output$contents2 <- DT::renderDataTable({}) 

あなたはこれをしたい場合は、「あなたのことを確認してくださいDTパッケージをインストールしました。


これが唯一の問題ではないと判明した場合、(あなたが適切なライブラリをロードした後)server.Rファイル内の関数定義が含まれます。これが修正された場合は、ファイルを正しくソーシングしていないためです(おそらく、パスが正しくないなど)。それでも問題が解決しない場合、問題は機能自体にあります。

また、入力をmy_functionに直接渡していないのはなぜですか?この場合、オブザーバーの使用を避けるべきです。代わりに、あなたはthis patternを使用することができます。

my_table <- eventReactive(input$goButton, { 
    my_function(input$file1, input$ts_freq, input$ts_start_yr, 
       input$ts_start_month, input$seasonal_cat) 
}) 

output$contents2 <- renderTable({ 
    my_table() 
}) 
+0

感謝を!これはうまくいった。私はここに結果を更新するために遅れていた –

関連する問題