2016-07-21 7 views
0

簡単な質問:plt.diff(dataset1)などの関数を実行し、出力グラフで関数がy軸ラベルとして「dataset1」という名前を使用するようにするにはどうすればよいですか?関数の引数をggplot2のラベルとして使用する方法はありますか?

plt.diff <- function(x){ 
    x$kind <- as.factor(x$kind) 
    ggplot(x,aes(x=as.factor(nodes), fill= age)) + labs(title = 'Difference plot', 
       x = 'points', y = deparse(substitute(x))) + geom_text(
       aes(label = nodes, y = diff)) + 
       geom_bar(stat="identity", aes(y = diff)) + 
       geom_bar(stat="identity", aes(y = (diff*(-1)))) + 
       coord_flip()} 

ご覧のとおり、私はすでにdeparse(substitute(x))を試してみましたが、うまくいきません。これは、現在のy軸の出力です: structure(list(nodes= structure(c(1L, 2L, 3L, 4L, 5L, 6L, 7L))))

答えて

0

私はdeparse(substitute(x))を経由して早い段階で関数に渡されたオブジェクトの名前を抽出し、その後、 ggplotにこれを渡します。これにより、オブジェクトの名前はplt.diffに渡される関数の引数に基づいており、 ではなくplt.diff内のggplotに渡されます。

おもちゃのデータセットを使用して:

dataset1 <- data.frame(nodes = 1:10, kind = 1:10, age = rpois(10, 20), diff = rpois(10,5)) 

library(ggplot2) 

plt.diff <- function(x){ 
    x_name <- deparse(substitute(x)) 
    x$kind <- as.factor(x$kind) 
    ggplot(x, aes(x = as.factor(nodes), fill = age)) + 
    labs(title = 'Difference plot', x = 'points', y = x_name) + 
    geom_text(aes(label = nodes, y = diff)) + 
    geom_bar(stat="identity", aes(y = diff)) + 
    geom_bar(stat="identity", aes(y = (diff*(-1)))) + 
    coord_flip()} 

plt.diff(dataset1) 

ggplot2 bar chart

+0

ありがとうございました!確かに私はこれについて新しい質問をするべきかどうか確信していますが、 'lapply'を使ってこの関数をリスト上で実行したい場合、リストの各メンバの名前は軸名ではなく' X [I] 'が使用されます。ここで、iはリストのインデックスです。それが保証されているならば、私は新しい質問をします –

+0

@ジェリー。はい、私はそれは少し異なる問題ですので、新しい質問をお勧めします。また、dputと期待される出力を介してデータセットを提供する場合には、さらに多くの関心が寄せられます。 –

関連する問題