Я хочу определить функцию сохранения сюжета, которая использует устройство gridsvg из пакета gridSVG.gridsvg не работает при использовании внутри функции
library(ggplot2)
library(gridExtra)
mtcars$gear <- factor(mtcars$gear,levels=c(3,4,5),
labels=c("3gears","4gears","5gears"))
mtcars$am <- factor(mtcars$am,levels=c(0,1),
labels=c("Automatic","Manual"))
mtcars$cyl <- factor(mtcars$cyl,levels=c(4,6,8),
labels=c("4cyl","6cyl","8cyl"))
myPlot <- qplot(mpg, data=mtcars, geom="density", fill=gear, alpha=I(.5),
main="Distribution of Gas Milage", xlab="Miles Per Gallon",
ylab="Density")
savePlot <- function(filename, plot, plotWidth = 15, plotHeight = 10){
gridSVG:::gridsvg(name = filename, width = plotWidth, height = plotHeight)
print(plot)
dev.off(which = dev.cur())
}
Однако, если я попытаюсь использовать функцию, это не сработает. Произойдет ошибка:
savePlot("~/Desktop/myplot.svg", myPlot)
Show Traceback
Rerun with Debug
Error in eval(expr, envir, enclos) : object 'filename' not found
Однако, если я делаю эти шаги с консоли это работает:
gridSVG::gridsvg(name = "~/Desktop/myPlot.svg", width = 15, height = 10)
myPlot
dev.off()
Есть ли способ, что я мог бы использовать функцию gridsvg из другой функции?
Интересно, могу ли я сделать это с помощью eval из какой-либо среды.
Thanks, Ben.
Как любопытно! 'gridsvg' имеет кучу' eval (fncall [[i]]), который, кажется, вызывает проблему, но вы бы подумали, что именованные аргументы будут отфильтрованы до правильной среды? –