を生成し、私はグラフの多くを生成するggplotためのループを使用する方法についての記事をたくさん読みましたが、私の問題を説明しているいずれかを見つけることができません...が同じ値を持つグラフが異なる見出し
私が持っていますデータフレームを作成し、92列をループして各列の新しいグラフを作成しようとしています。私は別のオブジェクトとして各プロットを保存したい。ループ(下のコード)を実行してグラフを印刷すると、すべてのグラフが正しく表示されます。ただし、assign()でprint()コマンドを変更すると、グラフが正しく表示されません。タイトルは必要に応じて変更されますが、グラフの値はすべて同じです(最終的なグラフのすべての値です)。 plot_grid()を使って10のプロットを生成すると、グラフのタイトルと軸のラベルはすべて正しいものでしたが、値は同じだったので、これを見つけました。
私のデータセットが大きいので、以下の図のように小さなデータセットを用意しました。
サンプルdatafame:
library(ggplot)
library(cowplot)
df <- as.data.frame(cbind(group=c(rep("A", 4), rep("B", 4)), a=sample(1:100, 8), b=sample(100:200, 8), c=sample(300:400, 8))) #make data frame
cols <- 2:4 #define columns for plots
for(i in 1:length(cols)){
df[,cols[i]] <- as.numeric(as.character(df[,cols[i]]))
} #convert columns to numeric
プロット:
for (i in 1:length(cols)){
g <- ggplot(df, aes(x=group, y=df[,cols[i]])) +
geom_boxplot() +
ggtitle(colnames(df)[cols[i]])
print(g)
assign(colnames(df)[cols[i]], g) #generate an object for each plot
}
plot_grid(a, b, c)
私はggplotsのプロットを作るとき、それは私だけの最終値からのデータをレンダリングすることを考えていますか?それとも何か?これを回避する方法はありますか?
グラフの数が多いので、私はそれをしたいと思うし、図のためにプロットを混ぜ合わせたい。
ありがとうございます!
詳細な回答Graemeに感謝します。私は地元のことを考え、 '私'を再定義する必要があります。 – Harry
'aes()'は 'df [、i]'のような数値ベクトルではなく、変数名を参照する必要があります。これを行うと、間違ったデータを気付かずにプロットするなど、予期しない結果が生じることがあります。 '<< - 'や 'assign'を使うことは、ほとんどの場合、Rの問題について間違った方向へ行くという明確な兆候ではありません。 – baptiste