我想自动将我的绘图输出写入我的工作目录。此外,我已经以某种方式构建了我的脚本,因此一些计算步骤和绘图依赖于前面的变量。像这样,如果不再需要某些计算步骤,或者我正在计算不同的场景,则会跳过一些计算步骤。
我遇到以下问题:如果我在没有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
以外的其他解决方案?