如何获取与图形设备关联的文件?

时间:2016-02-24 06:43:33

标签: r

在将图表打印到文件时,我想找到我打印到的文件的位置。

pdf("test.pdf")
plot(1:5)
# Somehow retrieve "test.pdf"
dev.off()

在这个例子中,我在调用pdf时指定了文件名,所以答案很明显。我的用例是自动生成文件位置的时间,例如在knitr文档中。

对于文件连接,您可以使用summary(conn)$description获取关联文件。我希望能够从summary(dev.cur())str(dev.cur())获得有用的东西,但那里没有运气。

如何从dev.cur()转到相关文件?或者,如何检索正在写入绘图的文件的位置?

1 个答案:

答案 0 :(得分:6)

我不得不反驳自己和我在评论中说的话。 .Devices对象提供了所需的信息:

pdf()
.Devices
#[[1]]
#[1] "null device"
#[[2]]
#[1] "pdf"
#attr(,"filepath")
#[1] "Rplots.pdf"
#[[3]]
#[1] ""

文件名存储为属性,您可以从输出中看到。

正如@RichieCotton注意到的那样,"单数"上述对象的版本.Device仅提供有关当前设备的信息(而不是整个列表),因此提取文件路径非常简单:

attr(.Device, "filepath")
#[1] "Rplots.pdf"