Я не могу понять, почему следующая функция не работает. При необходимости я создам данные для примера. Пожалуйста, дайте мне знать. Но это займет много времени, и, следовательно, я хотел сначала спросить без данных, на случай, проблема очевидна, что вы можете видеть без данных.Можно ли определить команды сюжета как часть функции, а затем использовать настраиваемую функцию для построения?
См. Приведенный ниже код. Если я использую функцию
plotReturns(8, "1930-01-01", "1940-12-31", "savehere.pdf")
файл savehere.pdf
создается, но я не могу открыть его. Я получаю сообщение об ошибке
Ошибка при открытии этого документа. Этот файл нельзя открыть, поскольку он не имеет страниц.
Но, если вместо того, чтобы использовать эту функцию, я вручную пройти через каждый шаг в этом коде функции (вместо имен переменных значений используемых выше в качестве аргументов), то файл savehere.pdf
создаются в порядке, и я могу открыть его.
Итак, похоже, что нет ничего плохого в моих конкретных командах. Но тогда почему функция не работает, когда вызывается как функция?
Благодарим за помощь.
plotReturns = function(decileValue, startDate, endDate, fileName) {
# Keep data from specific decile
specificdecile <- merged.data[merged.data$decile_correct == decileValue,]
#filter the data to get rows within the specified dates
specificdecileAndYears <- specificdecile[
((specificdecile$rdate >= as.Date(startDate)) &
(specificdecile$rdate <= as.Date(endDate))),]
#keep the necessary columns:rdate, decile_correct, vwret_bottomup, vwret_CRSP
specificdecileAndYears <- specificdecileAndYears[c("rdate", "decile_correct",
"vwret_bottomup", "vwret_CRSP")]
# Melt the data for plotting
melted.data <- melt(specificdecileAndYears, id=c("rdate","decile_correct"))
# Use melted data for plotting
# Set the plot title
title <- paste("Plot for decile", decileValue)
# Specifing colors to be used for line plots
myColors <- c("steelblue", rgb(1,0.5,0.3,0.5))
fileName <- fileName
pdf(fileName, width=8, height=5)
# scale_color_manual is to use custom colors specified in myColors above.
# The first argument of scale_color_manual specifies the title of the legend,
# which is set to empty here.
ggplot(melted.data, aes(x=rdate, y=value, color=variable)) + geom_line() +
opts(legend.position=c(0.85,0.2), legend.background=theme_rect(col=0), title=title) +
scale_color_manual("", values=myColors) +
ylab("Return") + xlab("")
# turn device off
dev.off()
}
Это FAQ и ловит много-много людей. Вы должны явно указать _print_ графику ggplot или решетки из функции. т. е. 'p <- ggplot (...); печати (р) '. – joran
Спасибо, Йоран. Цените свой ответ. – Curious2learn