使用.RData文件

8

我意识到我覆盖了一个花费我一些时间创建的.R文件。在我的.RData中,是否可以看到我运行的命令?我总是将我的文件保存为外部脚本,以前从未使用过.RData文件,所以我不知道该怎么办,担心永远失去这个文件。

4个回答

10
你的目录中是否有一个名为".Rhistory"的文件?该文件可能在Linux系统上被隐藏。
请查阅帮助页面?history。

是的 - 它在那里;感谢提示。我刚试图加载它,使用 history(max.show = Inf) 但是它不够远,因为它比一天短。 - djq

10

这并不是对你问题的直接回答,而是来自The Pragmatic Programmer的一些建议,这些建议在避免类似情况时多次帮助了我:

始终使用源代码控制

如果一个过程值得记录在一个.R文件中,则应该受到源代码控制系统的保护。这为您提供了许多重要的好处,其中两个是:

  • 您可以恢复或回滚您的文件,这提供了防止意外删除或修改的保护,在一小时后,这些修改开始看起来似乎并不是那么明智。

  • 您的工作在一个或多个位置备份。最好在不同的计算机上备份。

如果您以前从未使用过源代码控制,请参考以下资源:

  • Git是一个很棒的系统,具有分布式的优点,使您的文件非常难丢失。gitref.org是学习Git的好地方,GitHub为离线Git存储库提供了出色的托管服务。

  • Mercurial是另一个很好的分布式系统。Joel Spolsky,这个网站的联合创始人之一, 在hginit.com上写了一份出色的指南。Bitbucket是离线Mercurial存储库的绝佳托管服务,甚至允许您无限制地创建私有仓库以控制对您的工作的访问。

学习源代码控制无疑是我在编程工具方面所做过的最有价值的投资。当第一次遇到类似情况时,它将为你带来回报。


我很感激您的建议。我曾经尝试过几次GitHub,但从未真正掌握它。我需要开始使用它;特别是因为这是一个复杂的.R文件,我不确定我能否重新创建它。 - djq
使用Notepad++(和NppToR)工具,您可以在每次文件保存后创建“备份副本”以便于工作。这是仅适用于Windows的解决方案。 - Marek
即使您只是在本地使用Mercurial,它也可以成为一个巨大的救星,而且该教程非常棒。一个非常易于接近的替代/第一步可能是dropbox.com,它的工作方式有点像版本控制——它允许您回滚至少五个版本,并解决了离线备份问题。 - Richard Herron
我之前没有使用过Mac,但我认为它应该有以波浪线结尾的文件,因为它是基于UNIX系统的。 - aL3xa

2
如果你正在使用GNU/Linux发行版,那么很有可能你已经在工作目录中备份了数据。你只需要使用以下命令即可:
  • 在bash shell中:
  • ls -a | grep ~$

  • 在R中:
  • dir(all.files = TRUE, pattern = "~$")

请注意,只有当你想搜索以“.”开头的隐藏文件时,才需要使用-aall.files = TRUE参数,否则可以轻松省略它们。
但是,正如Sharpie所建议的那样,你应该一定要使用Git或SVN或其他版本控制系统。我会推荐Git(主要是因为GitHub)。虽然这只对你托管的开源项目有用,否则你将不得不支付GitHub服务费用(我想你肯定希望跳过这个步骤,对吧?)

我正在使用带有OSX的Mac电脑 - 这对它也适用吗? - djq

0

我相信 .RData 文件是你运行 save.image() 命令所得到的结果 - 它会保存你在输入 ls() 命令时看到的所有内容。你可以通过将其拖入 R 控制台或者运行命令 load(".RData") 来恢复这些内容。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接