Простая цель: я пытаюсь создать определяемый пользователем fn (udf
), который позволит мне объединить несколько строк кода, чтобы он был сжат и легче читался.
Давайте рассмотрим простой пример. В одном fn я хотел бы построить некоторые данные и затем экспортировать график, используя tiff
fn (или любой аналогичный fn: png
, jpeg
, ...). Однако я хочу иметь возможность использовать любую функцию построения по своему выбору , поэтому я подумал, что передача кодового блока (назовем его ' plotcode ') вызову fn будет работать просто хорошо. Что-то вроде:
udf <- function(plotcode, title){
plotcode
tiff(filename=title)
plotcode
dev.off()
}
Конечная цель состоит в том, чтобы превратить 4 строки кода в 1, то есть:
plot(dat) # ====> udf(plotcode = plot(dat), title = "plot.tiff")
tiff("myplot.tiff")
plot(dat)
dev.off()
К сожалению, он только отображает данные и не экспортирует это в файл. Насколько я понимаю, это потому, что я открываю графическое устройство, когда использую функцию экспорта, чтобы он больше не распознавал plotcode ?
Я нашел одно альтернативное решение, do.call
fn, но он позволяет разделить plotcode на две части: (1) имя fn и (2) аргументы. Я надеюсь сохранить plotcode вместе, чтобы его было легче скопировать / вставить позже.
Может быть, есть еще один вариант, о котором я не думаю?