2017-01-24 14 views
0

私はこのような構造のアプリケーションを持っています:アプリケーションを呼び出す前にパラメータ(ライブラリ、関数)とデータをロードします。このアプリスクリプトを実行すると動作しません。だから私の現在の解決策は、df <- ...までのコンソールで、そしてスクリプトを実行した後に、行をロードすることです。R Shiny - アプリケーションを呼び出す前のパラメータとデータを読み込む

TheFileDirectory <- "/.../" 

# Libraries and functions 
source(paste0(TheFileDirectory, "LibFun script.R")) 

# Data 
df <- readRDS(file = paste0(TheFileDirectory, "TheData.rds")) 

# Call the app 
source(paste0(TheFileDirectory, "server.R")) 
source(paste0(TheFileDirectory, "ui.R")) 

shinyApp(ui = Interface, server = Serveur) 

どうすればこの問題を回避できますか?私は清潔な解決策があると確信していますが、私はそれを見つけられませんでした。ここで

LibFun script.Rです:

var1 <- c("Russia","Canada","Australia","Australia","Russia","Australia","Canada","Germany","Australia","Canada","Canada") 
var2 <- c("UnitedStates","France","SouthAfrica","SouthAfrica","UnitedStates","SouthAfrica","France","Norge","SouthAfrica","France","France") 
var3 <- c("Brazil","Colombia","China","China","Brazil","China","Colombia","Belgium","China","Colombia","Colombia") 
df <- data.frame(var1, var2, var3) 

TheData <- saveRDS(df, file = paste0(TheFileDirectory, "TheData.rds")) 

答えて

1

チェックこのリンク: https://shiny.rstudio.com/articles/modules.html

章:パッケージのモジュール

library(ggplot2) 
library(shiny) 
library(shinydashboard) 

CountPlotFunction <- function(MyData) 

    { 
    MyPlot <- ggplot(data = MyData, aes(x = MyData)) + 
    geom_bar(stat = "count", aes(fill = MyData)) + 
    geom_text(stat = "count", aes(label = ..count..)) + 
    scale_x_discrete(drop = FALSE) + 
    scale_fill_discrete(drop = FALSE) 
    return(MyPlot) 
} 

そして、ここでは、データ(スクリプトがTheData.rdsを行うには)です

あなたはserverとuiの2つのファイルを持っているようです。したがって、ファイルglobal.Rは、サーバとUIの前に呼び出されるので、助けになります。

+0

ありがとうございました。しかし、 'global.R'ファイルが' ui.R'ファイルと 'server.R'ファイルと同じディレクトリにある場合にのみ動作します。 'global.R'ファイル(またはそれと同等のもの)を別のディレクトリに置くことができるようにする方法は? – Kumpelka

+0

他のパッケージをglobal()からsource()経由で呼び出すことができます。私はそれがカスタム入力と出力のバインディングを書くときによく使われると思います。 – BigDataScientist

+0

あなたが探していたものなら、あなたは "チェック"サインをクリックして答えを受け入れることができます... – BigDataScientist

関連する問題