保存Rstudio

时间:2016-02-10 17:19:59

标签: r rstudio

我为一个项目制作了不同的情节(超过一百个),我没有在路上捕捉它们(是的,它很糟糕,我知道)。现在,我需要立即保存它们,但不再运行我的脚本(这需要几个小时)。在Rstudio中有没有办法这样做?

编辑:所有情节都已存在,我不想再次运行它们。

5 个答案:

答案 0 :(得分:13)

在RStudio中,每个会话都有一个临时目录,可以使用tempdir()获得该目录。在该临时目录中,还有另一个目录,该目录始终以"rs-graphics"开头,并包含所有另存为".png"文件的图。因此,要获取".png"文件的列表,您可以执行以下操作:

plots.dir.path <- list.files(tempdir(), pattern="rs-graphics", full.names = TRUE); 
plots.png.paths <- list.files(plots.dir.path, pattern=".png", full.names = TRUE)

现在,您可以将这些文件复制到所需的目录,如下所示:

file.copy(from=plots.png.paths, to="path_to_your_dir")



其他功能:

您会注意到,.png文件名是自动生成的(例如0078cb77-02f2-4a16-bf02-0c5c6d8cc8d8.png)。因此,如果要根据RStudio中.png文件的打印顺序编号,可以按照以下步骤进行操作:

plots.png.detials <- file.info(plots.png.paths)
plots.png.detials <- plots.png.detials[order(plots.png.detials$mtime),]
sorted.png.names <- gsub(plots.dir.path, "path_to_your_dir", row.names(plots.png.detials), fixed=TRUE)
numbered.png.names <- paste0("path_to_your_dir/", 1:length(sorted.png.names), ".png")

# Rename all the .png files as: 1.png, 2.png, 3.png, and so on.
file.rename(from=sorted.png.names, to=numbered.png.names)

希望有帮助。

答案 1 :(得分:4)

虽然这段讨论已经暂停了一段时间,但有些人,比如我自己,仍然遇到同样的问题,其他解决方案似乎甚至没有得到实际问题。< / p>

所以,亲自动手。您的绘图历史记录将保存在名为.SavedPlots的变量中。您可以直接访问它,将其分配给代码中的另一个变量,也可以从绘图窗口中执行后者。

# ph for plot history
ph <- .SavedPlots

在R 3.4.2中,我可以索引ph来重现设备中的相应图。以下内容相当简单:

  1. 打开一个新设备(png,jpeg,pdf ...)。
  2. 重现您的情节ph[index_of_plot_in_history]
  3. 关闭设备(如果是具有多个页面的pdf,则保持绘图)。
  4. 示例:

    for(i in 1:lastplot) {
        png('plotname.png')
        print(ph[i])
        dev.off()
    }
    

    注意:有时候由于编程不好而不会发生这种情况。例如,我使用MICE包来估算具有大量变量的许多数据集,并绘制this paper的4.3节中所示的绘图。问题是,每个绘图只显示了三个变量,如果我在代码中使用了png设备,则只保存每个数据集的最后一个绘图。但是,如果将图打印到窗口,则会记录每个数据集的所有图。

答案 2 :(得分:1)

如果您的绘图是3d,则可以拍摄所有绘图的快照并将其另存为.png文件格式。

par(mfrow)

否则,最好的方法是使用plotsPath = "../Plots/allPlots.pdf" pdf(file=plotsPath) for (x in seq(1,100)) { par(mfrow = c(2,1)) p1=rnorm(x) p2=rnorm(x) plot(p1,p2) } dev.off() 功能创建一个多面板绘图窗口。请尝试以下

png

您还可以使用bmptiffjpegpdf函数代替AREA.OPEN A000 protocol.lst ; area will be saved in 'protocol.lst' DO test ... AREA.CLOSE A000 ; all messages will be saved 。您可以阅读它们的优点和缺点,并选择您认为有利于您的需求。

答案 3 :(得分:0)

我不确定Rstudio如何打开绘制绘图的设备,但我猜它使用dev.new()。在这种情况下,保存所有打开的图形的一种快速方法是遍历所有设备并使用dev.print进行写入。

类似的东西:

lapply(dev.list(),function(d){dev.set(d);dev.print(pdf,file=file.path(folder,paste0("graph_",d,".pdf"))})

其中folder是您要存储图形的文件夹的路径(例如,如果您在Linux中并且想要将所有图形存储在主文件夹中,则可以是folder="~")。

答案 4 :(得分:-1)

如果您输入以下功能,则以下所有内容将保存在文档中:

pdf("nameofthedocument.pdf")

plot(x~y)
plot(...


dev.off()

你也可以使用tiff(),jpg()...参见?pdf