私は1つの引数を必要とし、プロットを出力する関数を作成しました。引数には変数がy軸に文字としてプロットされます。ここではいくつかのサンプルデータは、次のとおりです。lapplyを介してggplot2のaes_string()に文字列を渡しても機能しません。
df_year <- data.frame(year = c(2000, 2001), V1 = c(1.7,2.6))
df_year_speaker <- data.frame(year = c(2000, 2000, 2001, 2001),
speaker = c("Smith", "House", "Smith", "House"),
V1 = c(1.5,2,2.3,3),
partyaffil = c("rep", "dem", "rep", "dem"))
そして、ここに私のプロット機能:
require(ggplot2)
plot_fct <- function(means_year = df_year,
means_year_speaker = df_year_speaker,
x="year",
y="V1"){
ggplot()+
scale_fill_manual(values = c("#778aff","#ff6f54"))+ #blue,red
geom_line(data = means_year, aes_string(x, y),
color = "#212121")+
geom_point(data = means_year_speaker, aes_string(x, y))+
geom_label(data = means_year_speaker, aes_string(x, y,label="speaker",
fill = "partyaffil"),
color = "#343434")
}
私が直接私の機能を実行すると、それだけで正常に動作します:
plot_fct(y = "V1")
しかし、ときに私はそれを呼び出しますvia lapply
私はエラーが発生します:
> lapply(list(A = "V1"), FUN = plot_fct)
Error: ggplot2 doesn't know how to deal with data of class character
トレースバックを実行すると、エラーがfortify.default(data)
であることが判明しました。 何が間違っているか、またはlapply
経由で私の関数に文字列を渡す方法についてのアイデアはありますか?
最初の引数として 'y'を使って関数' plot_fct'を再定義します。そして、lapplyは、最初の引数yには正しく、mean_yearでは正しく動作しません。 – Heikki
あなたは本当に 'facet_grid'の後ろにいると思うでしょう。 – alistaire
'facet_grid 'はセパラートプロットを生成できますか?私はこの関数で90以上の変数をプロットしたいので、それらをすべて1つにするとうまくいきません。 – user9015909