Я пытаюсь создать пользовательскую функцию (давайте назовем ее udf
), которая позволит мне объединить несколько строк кода, чтобы он был сжатым и легче для чтения.
Давайте просто возьмемпростой пример. Когда я использую функцию tiff
(или почти любую функцию вывода: png
, jpeg
, ...), мне приходится заканчивать ее dev.off()
, и мне было интересно, смогу ли я создать функцию, котораяделает что-то вроде:
udf <- function(title)
{tiff(filename=title)
*execute the next line of code in my R script*
dev.off()
}
Так что я могу превратить 3 строки кода в 2, то есть:
tiff("plot.tiff") # >>>>>>>>>>> udf("plot.tiff")
plot(x) # >>>>>>>>>>> plot(x)
dev.off()
Из того, что я нашел в Интернете, одно решение было положитьзадержка "dev.off ()" на 1 секунду, но это не показалось эффективным, плюс я считаю, что функция delay
в любом случае больше не работает. Поэтому я считаю, что есть три варианта, которые я пытаюсь изучить. Либо тот, что приведен выше, который будет ожидать получения следующей строки кода и затем выполнять ее до dev.off()
, либо:
Может быть, функция с аргументом, который может быть выполнен, т.е.:
udf <- function(title, arg) # >>>>>>>>>>> udf("plot.tiff", plot(x))
{tiff(filename=title) # >>>>>>>>>>> That would make it one line!
*execute(arg)*
dev.off()
}
Или, возможно, способ выполнить приглашение ввода пользователя, например:
udf <- function(title)
{tiff(filename=title)
n <- prompt="Enter a command: "
*execute(n)*
dev.off()
}
Возможно, есть даже другой вариант, который я не могу придумать, но в Интернете, похоже, ничего не происходит,возможно, есть ключевое слово, которое я не использую в своем поиске, но любая помощь будет признательна. Спасибо!
Best, @ UpAndComing