Запись файла изнутри функции в R - PullRequest
0 голосов
/ 14 февраля 2019

Я хочу написать файл из функции в R. Когда я помещаю рабочий код в функцию, я не получаю никакой ошибки, однако файл не создается

Минимальный пример


# Make a simple plot 

plot(1:15) # make plot
p <- recordPlot() # assign plot
p # view plot


# Write the plot to a file (this works)

filename <- "myfile.png"
png(filename)
p
dev.off()


# Move the same code inside a function and call it

write_file <- function(my_plot) {
  filename <- "myfile.png"
  png(filename)
  my_plot
  dev.off()

}

write_file(p) 
# Nothing errors, but no file is created

То, что я пробовал до сих пор

Я подумал, что, возможно, функция не может получить доступ к объекту графика.Но кажется, что он может вызываться изнутри функции, поэтому кажется, что это не проблема (хотя я не уверен на 100%)


plot.new() # clears plot area
function_access_plot <- function(plot_object) {
  plot_object
}
function_access_plot(p)
# This successfully displays the plot

1 Ответ

0 голосов
/ 14 февраля 2019

За исключением вытеснения, предложенный временный файл может быть записан, но вы никогда не будете писать в него, потому что простое указание значения, возвращенного из recordPlot(), не будет записываться на текущее устройство.Если вы измените свою функцию следующим образом:

write_file <- function(my_plot) {
  filename <- "myfile.png"
  png(filename)
  replayPlot(my_plot)
  dev.off()
}

, это сработает для меня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...