2017-01-27 17 views
1

私は一連の例を作り、関数を使用しようとします。形状、アルファ、サイズなどを使用するかどうかを制御するにはどうすればよいですか?ここで私が使用していたコードです:ggplot2関数で使用する審美的なコントロール

library(ggplot2) 

ggplot_example <- 
    function(aesthetic, var){ 
    ggplot(mpg) + 
    geom_point(aes(x = displ, y = hwy, 
        aesthetic = get(var))) 
    } 

ggplot_example("color", "hwy") 
ggplot_example("color", "class") 
ggplot_example("alpha", "cty") 
ggplot_example("size", "cty") 

は今get(aesthetic) = get(var)がエラーを投げていると私はちょうどaesthetic = get(var)を使用する場合には、aesthetic引数を無視します。

答えて

3

おそらくmetaprogramming in Advanced Rにお読みください。変数をどこにでも貼り付けることはできません。関数が文字列、記号、または式を必要としているかどうかを認識するように注意する必要があり、一方を他方から作ることができる必要があります。

do.call()を使用する最も簡単な方法は、を使用してパラメータ名を設定するときに、aes()コールを動的に構築することです。お試しください

ggplot_example <- 
    function(aesthetic, var){ 
    ggplot(mpg) + 
    geom_point(do.call("aes", setNames(list(quote(displ), quote(hwy), 
        as.name(var)), c("x", "y", aesthetic)))) 
    } 

ggplot_example("color", "hwy") 
ggplot_example("color", "class") 
ggplot_example("alpha", "cty") 
ggplot_example("size", "cty") 
+0

ああ、私は多くのことを学ぶ必要があります。私はそれを探しているときに近くにいませんでした。ありがとうございました。 – yake84

関連する問題