2017-12-11 8 views
0

渡されるパラメータに基づいて異なる種類のプロットプロットを作成する関数を作成したいと考えています。私は、次のデータplot_ly関数のパラメータとして変数を渡す

library(plotly) 
#### test data 
lead <- rep("Fred Smith", 30) 
lead <- append(lead, rep("Terry Jones", 30)) 
lead <- append(lead, rep("Henry Sarduci", 30)) 
proj_date <- seq(as.Date('2017-11-01'), as.Date('2017-11-30'), by = 'day') 
proj_date <- append(proj_date, rep(proj_date, 2)) 
set.seed(1237) 
actHrs <- runif(90, 1, 100) 
cummActHrs <- cumsum(actHrs) 
forHrs <- runif(90, 1, 100) 
cummForHrs <- cumsum(forHrs) 
df <- data.frame(Lead = lead, date_seq = proj_date, 
       cActHrs = cummActHrs, 
       cForHrs = cummForHrs) 

を作成した場合、私は使用してそれをプロットできます。

plot_ly(data = df, x = ~date_seq, y = ~cActHrs, split = ~Lead) 

私は以下のようなmakePlot機能を加えた場合、どのように私はそれがこのような何かをするだろう。

makePlot <- function(plot_data = df, x_var = date_seq, y_var, split_var) { 
    plot <- plot_ly(data = df, x = ~x_var, y = ~y_var, split = ~split_var) 

    return(plot) 
} 

x_var、y_var、およびsplit_varをプロットしてx、y、および分割パラメータとして認識できる関数はありますか?

答えて

0

最終的にこれを理解することに夢中になり、この小さなフォローアップがこれらのタイプのタスクの謎を取り入れることを願っています。この質問はプロットに焦点を当てていますが、さまざまなRパッケージ(例:dplyrやplotly)の関数が式をどのように評価するのか、それらの式が評価される方法を操作する方法を最初に理解することが重要です。この理解を深めるための素晴らしい参考資料は、dplyr hereまたは代わりにhereでのプログラミングに関するHadleyの記事です。

これがあなたのベルトの下にいれば、これはかなり簡単だと分かります。そのトリックは、dplyr関数を呼び出すときと同じように、変数の引数を単に渡すだけで、プロット関数内のそれらのパラメータを必ず引用することです。上記の質問のために、この機能は私のために働いた:

makePlot <- function(plot_data = df, x_var, y_var, split_var, 
        type_var="scatter", 
        mode_var="lines+markers") { 
    quo_x <- enquo(x_var) 
    quo_y <- enquo(y_var) 
    quo_split <- enquo(split_var) 

    # print(c(quo_x, quo_y, quo_split)) 

    plot <- plot_ly(data = df, x = quo_x, y = quo_y, split = quo_split, 
        type=type_var, mode=mode_var) 

    return(plot) 
} 

# using df created in question, pass col's as args like dplyr functions 
p1 <- makePlot2(df, date_seq, cActHrs, Lead) 
p2 <- makePlot2(df, date_seq, cForHrs, Lead) 
関連する問題