如何将 R 中的绘图保存在工作目录的子目录中

How to save a plot in R in a subdirectory of the working directory

是否可以将 R 中的绘图保存到当前工作目录的子目录中?我尝试了以下方法,但这不起作用。我不确定如何将工作目录连接到我想要的文件名。

  wd <- getwd()

  png(filename=wd+"/img/name.png")

  counts <- table(dnom$Variant, dnom$Time)
  barplot(counts, main="Distribution of Variant and words of time",
    xlab="Temporal nouns", col=c("paleturquoise3", "palegreen3"),
    legend = rownames(counts))

另外,图片导出功能的默认保存目录是什么?

当运行下面大卫的建议时,返回的错误是:

Error in png(filename = paste0(wd, "/img/name.png")) : 
  unable to start png() device
In addition: Warning messages:
1: In png(filename = paste0(wd, "/img/name.png")) :
  unable to open file 'D:/Dropbox/Corpuslinguïstiek project/antconc resultaten/img/name.png' for writing
2: In png(filename = paste0(wd, "/img/name.png")) : opening device failed

这会起作用:

png(filename="new/name.png")    #will work if "new" folder is already in your working directory
data(mtcars)
plot(mtcars$wt, mtcars$mpg, main="Scatterplot Example",  xlab="Car Weight ", ylab="Miles Per Gallon ", pch=19)
dev.off()

如果您的工作目录中还没有 "new" 文件夹,您可以使用 G. Grothendieck 的回答中提到的 dir.create() 创建相同的文件夹。

此外,dev.off() 是必需的,因为它会关闭指定的(默认为当前的)设备。没有它,您将无法查看创建的图像。

试试这个:

File <- "./img/name.png"
if (file.exists(File)) stop(File, " already exists")
dir.create(dirname(File), showWarnings = FALSE)

png(File)

# ... whatever ...

dev.off()

如果可以覆盖文件,则省略 if 语句。

如果 img 存在,则可以选择省略 dir.create。 (如果您尝试创建一个已经存在的目录,则不会造成问题。)

备注

1) 另一种可能性是将 img 放在主目录中。我们可以使用 png("~/img/name.png") 将文件保存到主目录中的 img 目录。如果不确定哪个目录是主目录,请尝试 path.expand("~").

2) 还要注意在绘图命令之后(而不是之前)给出的 savePlot 命令。