Сохранение графиков в рабочем каталоге - графики пустые?
Я хочу автоматически записать вывод своих графиков в мой рабочий каталог. Кроме того, я структурировал свой сценарий таким образом, чтобы некоторые этапы вычислений и графики зависели от предыдущей переменной. Таким образом, некоторые этапы вычислений пропускаются, если они больше не нужны или я вычисляю другой сценарий.
Я сталкиваюсь со следующей проблемой: график правильно сохраняется в рабочем каталоге, если я вызываю функцию просто без if
состояние. Однако, как только я вызываю функцию внутри if
условие, только пустой участок записывается в рабочий каталог.
Следующий воспроизводимый пример демонстрирует проблему (пожалуйста, замените путь рабочего каталога):
##Set WD (!! replace with own path)
setwd("C:/Users/deca/Desktop")
##Initiate packages
install.packages("effects")
install.packages("Cairo")
require(effects)
require(Cairo)
##Initiate data set and condition
varL <- rnorm(100, mean = 1000, sd = 10)
varP <- rnorm(100, mean = 5)
entry <- as.factor(sample(0:1, 100, replace = TRUE))
dat <- data.frame(varL, varP, entry)
condition <- "YES"
##Define regression
hx1 <- glm(entry ~ varL*varP, data = dat, family = binomial(link = "probit"))
##Plot within R graphic device - works perfectly fine
plot(effect("varL:varP", hx1))
##Save plot to WD without if condition - works fine
Cairo(file=as.character("plot1"),
type = "png",
units = "px",
width = 715,
height = 489,
pointsize = 12,
dpi="auto")
plot(effect("varL:varP", hx1))
dev.off()
##Save plot to WD with if condition - This is very the problem surfaces
if(condition == "YES") {
Cairo(file=as.character("plot2"),
type = "png",
units = "px",
width = 715,
height = 489,
pointsize = 12,
dpi="auto")
plot(effect("varL:varP", hx1))
dev.off()
}
Откуда эта проблема? Как я могу решить это в течение Cairo
? Как я могу сохранить участки в WD
так что это работает, потенциально используя другое решение, кроме Cairo
?