2017-02-08 7 views
0

私は dfで、さまざまなカラムx1,x2,x3,etc...(名前には実際のパターンはありません)を持っています。そして、何かをするために可変量のカラムのために "config"を一般的に渡したいと思います。たとえば、列プロットのリストを作成します。私が想像することは、このようなことを言っている:Rからリストからキャラクターに使える表現へ行く方法は?

col.plot.list <- list(list(col='x2', seg=c(0,6)), list(col='z17', seg=NULL)) 

は、さまざまな方法でプロットを設定するには、各サブリストの要素を解釈するの列のプロットのリストを返す関数にそれを渡すことができること。この例では、このような何か:

gen.plots <- function(col.plot.list) { 
    lapply(col.plost.list, function(x) { 
     ggplot(df, aes(cumsum(x$col)) #plus geoms & optionally leverage x$seg if not NULL 
    } 
} 

私も思ったんだけど、何が戻って私がdf$x$colまたはaes(y=x$col)などのようなものに渡すことができ、使用可能な式と列名に対応する文字列を有効にする方法..ですそれには何かがありますか?それとも、元のリストに保存して、どのような手助けをするために使用しなければならない別のタイプがありますか?私はdata.tableの操作をlapplyで行うことを許可しないので、完全な列ベクトルを保存したくありません。

+0

あなたはおそらく 'を参照していますget() '。 '?get'を参照してください – GGamba

+0

getは私の例のいくつかでも動作しているようですが、その1つを思い出してくれてありがとう。 –

答えて

1

あなたの質問はあまり明確ではありませんが、この例が有用かもしれません。基本的には、引用された式を扱うことができるaes_を使用する必要があります。

library(data.table) 
library(ggplot2) 
df <- data.table(x2 = 1:2, z17 = 3:4, y = 1:2) 

col.plot.list <- list(list(col='x2', seg=c(0,6)), list(col='z17', seg=NULL)) 

gen.plots <- function(col.plot.list) { 
    lapply(col.plot.list, function(x) { 
    col <- x$seg 
    xval <- as.name(x$col) 
    ggplot(df, aes_(x = bquote(cumsum(.(xval))), 
        y = quote(y), 
        color = if (is.null(col)) NULL else quote(col))) + 
     geom_point() 
    }) 
} 

gen.plots(col.plot.list)[[1]] 
gen.plots(col.plot.list)[[2]] 

あなただけdata.table(またはdata.frame)をサブセットしたい場合は、これはよくある質問で、あなたがhelp("[")とdata.tableビネットを勉強する必要があります。df[[col.plot.list[[1]]$col]]

+0

非常に興味深いですが、 'as.name'には慣れていませんし、どんな型になり、' bquote'でしょうか。私はそれらの2つを読み上げます。 [apparenlty 'name'はクラスです、それを知らなかった] –

関連する問題