私はggplot2を使用して、殺人率に対するさまざまな軍事作戦の影響を調査しています。その効果を示すために、手術が起こったときの縦線と、手術前後の殺人率の滑らかな線を描きます。
多数の郡でこれを示すために、facet_wrapプロットを作成しました。見事に動作しますが、関数に変換すると、ローカル変数を使用して垂直線を描画するとエラーが発生します。
次にいくつかのサンプルコードを示します。
drawTS <- function(df, dates, text) {
p <- ggplot(df, aes(date, murders)) +
facet_wrap(~ county, ncol = 1,
scale="free_y") +
scale_x_date() +
geom_smooth(aes(group = group), se = FALSE)
for(i in 1:length(dates)) {
#If it's not a global variable I get an object not found error
temp[i] <<- dates[i]
p <- p + geom_text(aes(x,y), label = text[i],
data = data.frame(x = dates[i], y = -10),
size = 3, hjust = 1, vjust = 0) +
#Here's the problem
geom_vline(xintercept=temp[i], alpha=.4)
}
p
}
library(ggplot2)
df <- data.frame(date = rep(seq(as.Date("2007/1/01"),
length=36, by='1 month'),4),
murders = round(runif(36*4) * 100),
county = rep(rep(factor(1:4),9),each=4),
group = rep(c(rep(1,6), rep(2,12),rep(3,18))), each=4)
dates <- c(as.Date("2007/6/15"), as.Date("2008/6/15"))
temp <- c()
drawTS(df, dates, c("Op 1","Op 2"))
グローバル変数にエラーはありませんが、見た目は醜いです。
内部でtemp[i]
使用する変数の代わりに、次のようになります。dates[i]
geom_vline()
NextMethod( "[")のエラー:オブジェクト'i'が見つかりません
dates[i]
変数をでラップすると、次のaes()
ようになります。
eval(expr、envir、enclos)のエラー:オブジェクト'county'が見つかりません
誰かがこれを修正する方法を知っていますか?