使用 jpeg(file= ) 会创建一个空的 jpeg,即使没有调用来创建绘图



这是在批处理中运行的。给定以下代码片段,我不明白为什么R在Windows中创建一个空的jpeg文件,尽管我没有调用绘图或图形。当我在Linux或OSX下运行类似的代码时,不会创建jpeg文件。我不知道用户是否想要绘图,所以我提前设置了文件名,并给他们一个名称和位置。

##
sink("c:\temp\test.lst")
jpeg(file="c:\temp\test%d.jpeg")
norm <- rnorm(100)
print(norm)

如有任何建议,我们将不胜感激。

?jpeg帮助文件(也适用于bmp()png()tiff()设备)表明:

The ‘type = "windows"’ versions of these devices effectively plot
 on a hidden screen and then copy the image to the required format.

这个特定于Windows的实现细节很可能解释了Windows和*NIX系统的行为差异。

在Windows上,调用上面的任何函数(以及pdf()postscript())都会创建一个文件——无论是否将任何内容绘制到隐藏的屏幕上。除了pdf()(它生成的文件我无法用查看器打开)之外,在绘图设备上注册的图像是在对特定设备的调用中指定的高度和宽度的白色矩形。

我不担心。如果零长度文件扰乱文件夹的前景让你感到困扰,你可以在之后用之类的东西清理

jpgs <- file.path("c:/temp", dir(pattern="c:/temp/test[0-9]*\.jpeg"))
s <- file.info(jpgs)[["size"]]
for(i in seq_along(s))
    if(s[i] == 0) file.remove(jpgs[i])

最新更新