私は、一貫した方法で名前を付けられた以前のforループで作った何百ものプロットを持っています。プロットは、タスクの結果がドメインにネストされています。forループとgrid.arrangeで不均等な数のプロットを結合する
grid.arrangeを使用して、同じプロット上に定義されたドメインのすべてのタスクをプロットしたいと思います。
domain_key <- data.frame(domain = c("soe", "soe", "soe", "elit", "elit"),
tasks = c("personal", "size", "shapeid", "onetoone", "puzzle"))
dummy <- ggplot(data.frame()) + geom_point() + xlim(0, 10) + ylim(0, 100)
plot.personalpct <- dummy + ggtitle("plot.personalpct")
plot.sizepct <- dummy + ggtitle("plot.sizepct")
plot.shapeidpct <- dummy + ggtitle("plot.shapeidpct")
plot.onetoonepct <- dummy + ggtitle("plot.onetoonepct")
plot.puzzlepct <- dummy + ggtitle("plot.puzzlepct")
そして、ここでそれを行う方法の私の基本的な考え方です:私のデータおよびプロットの構造を説明
ダミーデータ
for(j in domain_key$domain){
tasks <- unique(with(domain_key, tasks[domain == j])) #Get a list of the unique tasks for the domain
plots <- paste("plot.", tasks, "pct", sep ="") #Get the name of the plots as a character vector
grid.arrange(eval(parse(text = plots))) #evaluate the expression with grid arrange to display all the plots
}
私の問題は、ということだけで、最終的な引数です各ドメインの最初のプロットを表示します。これは、私の文字ベクトルは、コンマで区切られていないため、複数のオブジェクトとして解析されないためです。私は回避策の束を試したが、これを回避する方法を見つけることができません。または、私のアプローチが完全にオフかもしれません。
多くの援助に感謝します。
多分ちょうど 'grid.arrange(grobs = MGET(LS(パターン= "プロット\\ .. *のpctを")))を行います'? – lukeA
コメントありがとうございます。私は、すべての**私のgrobs( "プロット"で始まり、 "pct"で終わり、それらを1つのプロットに置く**)を取ると思う。私はそれぞれに関連するgrobsを含むいくつかのプロットを作る方法を探している私のキーで指定された**ドメイン**。 – jsizzle