Jer*_*lim 149 git version-control r
我尊重的许多数据分析师都使用版本控制.例如:
但是,我正在评估采用像git这样的版本控制系统是否值得.
简要概述: 我是一名社会科学家,他使用R来分析研究出版物的数据.我目前不生产R包.我的项目R代码通常包括几千行代码,用于数据输入,清理,操作,分析和输出生成.出版物通常使用LaTeX编写.
关于版本控制,我已经阅读了许多好处,但它们似乎与独立数据分析师的相关性较低.
采用版本控制还涉及几个潜在成本:
但是,我仍然觉得我错过了什么.关于版本控制的一般指南似乎比数据分析师更多地针对计算机科学家.
因此,特别是在类似于上面列出的情况下的数据分析师:
Sha*_*pie 83
我觉得你的问题的答案是肯定的 - 使用版本控制系统管理文件的好处远远超过实现这样一个系统的成本.
我将尝试详细回答您提出的一些观点:
- 备份:我已经有一个备份系统.
是的,我也一样.但是,对于依赖通用备份系统来充分跟踪与您的工作相关的重要和活动文件的适当性,需要考虑一些问题.在表现方面:
最重要的是:
例如,有一台Mac并使用Time Machine备份到我的计算机中的另一个硬盘驱动器.如果事情搞砸了,Time Machine非常适合恢复奇怪的文件或恢复我的系统.然而,它根本没有我的重要工作所需要的东西:
备份时,Time Machine必须对整个硬盘进行映像,这需要相当长的时间.如果我继续工作,则无法保证在我启动备份时的状态下捕获我的文件.在第一次备份完成之前,我也可能想要保存另一个点.
我的Time Machine备份保存到的硬盘驱动器位于我的机器中 - 这使我的数据易受盗窃,火灾和其他灾难的影响.
使用像Git这样的版本控制系统,我可以启动特定文件的备份,而无需在文本编辑器中请求保存,并且文件即时成像和存储.此外,Git是分布式的,因此我工作的每台计算机都有一个存储库的完整副本.
这相当于让我的工作在四台不同的计算机上进行镜像 - 没有任何上帝的行为可能会破坏我的文件和数据,此时我可能不会太在意.
- 分叉和倒带:我从来没有觉得有必要这样做,但我可以看到它是如何有用的(例如,你正在准备基于相同数据集的多篇期刊文章;你正在准备一份每月更新的报告,等等)
作为独奏家,我也不会那么多.然而,我通过选择倒带而节省的时间已经单独支付了我多次学习版本控制系统的投资.你说你从来没有觉得有必要这样做 - 但是在你当前的备份系统下重写任何文件真的是一个无痛,可行的选择吗?
有时报告在45分钟,一小时或两天前看起来更好.
- 协作:大多数时候我自己分析数据,因此,我不会获得版本控制的协作优势.
是的,但如果您最终在项目中与其他人合作,您将学习一种可能被证明是必不可少的工具.
- 是时候评估和学习版本控制系统了
不要太担心这个.版本控制系统就像编程语言一样 - 它们有一些需要学习的关键概念,其余的只是语法糖.基本上,您学习的第一个版本控制系统需要投入大部分时间 - 转换到另一个版本,只需要了解新系统如何表达关键概念.
选择一个受欢迎的系统,然后去吧!
- 与我当前的文件管理系统相比,复杂性可能会增加
你有一个文件夹,比如Projects
包含与你的数据分析活动相关的所有文件夹和文件吗?如果是这样,那么对其进行版本控制就会严重增加文件系统的复杂性0
.如果您的项目遍布计算机 - 那么您应该在应用版本控制之前集中它们,这最终会降低管理Documents
文件的复杂性 - 这就是为什么我们有一个文件夹.
- 版本控制是值得的吗?
是! 它为您提供了一个巨大的撤销按钮,使您可以轻松地将工作从一台机器转移到另一台机器,而无需担心丢失USB驱动器等问题.
2采用版本控制的主要优点和缺点是什么?
我唯一能想到的是文件大小的略微增加 - 但是现代版本控制系统可以通过压缩和选择性保存来完成绝对令人惊奇的事情,所以这几乎没有实际意义.
3使用R开始使用版本控制进行数据分析的好策略是什么(例如,示例,工作流程思路,软件,指南链接)?
保持在版本控制下生成数据或报告的文件是有选择性的.如果您正在使用类似的东西Sweave
,请存储您的.Rnw
文件而不是.tex
从它们生成的文件.存储原始数据,如果重新获取会很痛苦.如果可能,编写并存储一个用于获取数据的脚本,另一个用于清理或修改数据的脚本,而不是存储对原始数据的更改.
至于学习版本控制系统,我强烈推荐Git及其指南.
这些网站还有一些与使用Git执行特定操作相关的好技巧和窍门:
Dan*_*nes 23
我在一家分析工作室工作了九年,并向我们的分析项目介绍了版本控制的概念.显然,我是版本控制的忠实信徒.不过,我会提出以下几点.
小智 17
我使用R和LaTeX进行经济学研究,我总是将我的工作置于版本控制之下.这就像拥有无限制的撤销.尝试Bazaar,它是最简单的学习和使用之一,如果你在Windows上它有一个图形用户界面(TortoiseBZR).
是的,与其他人合作时版本控制还有其他好处,但即使是单独的项目也很有意义.
Jer*_*lim 17
为了完整起见,我想我会提供有关采用版本控制的最新信息.
我发现独奏数据分析项目的版本控制非常有用.
我已经采用git作为我的主要版本控制工具.我首先使用StatET在Eclipse中使用Egit.现在我通常只使用命令行界面,尽管与RStudio的集成非常好.
正如帖子中所述,我发现采用版本控制在我对数据分析项目的思考方面有很多次要的好处,包括澄清:
我仍然会推荐像你这样的独奏行为的版本控制,因为有一个安全网来捕捉错误可能是一件好事.
我曾经是一名独立的Java开发人员,我仍然使用源代码控制.如果我一直在检查事情,如果出现问题,我不能失去一个多小时的工作.我可以毫不担心地进行实验和重构,因为如果它出错了我可以随时回滚到我上一个工作版本.
如果是这种情况,我建议使用源代码管理.这不难学.
您必须使用版本控制软件,否则您的分析将无法完全重现.
如果要在某处发布结果,则应始终能够在生成脚本时重建脚本的状态.假设其中一个评论者在你的一个剧本中发现了一个错误:你怎么知道哪些结果有效?哪些不是?
从这个意义上讲,备份系统是不够的,因为它可能每天只执行一次,并且它不会对不同的备份应用标签,因此您不知道哪些版本对应于哪些结果.学习vcs比你想象的要简单,如果学习如何添加文件以及如何提交更改已经足够了.
版本控制是值得的吗?
一个很大的问题.
采用版本控制的主要优点和缺点是什么?
专业人士:您可以追踪您之前所做的事情.特别适用于乳胶,因为您可能需要一个被您删除的旧段落!当您的计算机崩溃或您使用新计算机时,您可以随时恢复数据.
缺点:你需要做一些设置.
使用R开始使用版本控制进行数据分析的好策略是什么(例如,示例,工作流程思路,软件,指南链接)?
刚开始使用它.我在Windows上使用togise SVN作为客户端工具,我的部门有一个svn服务器,我把所有的代码和数据(是的,你也将数据放在那里!).
先回过头来,了解编写R包的优点!你说你有几千行代码的项目,但这些没有像包代码一样的结构或文档?您可以获得符合包理想的大奖,包括每个函数的文档,许多常见难以捕获的错误的测试,编写自己的测试套件的工具等.
如果你没有纪律来制作一个包,那么我不确定你是否有纪律来进行适当的修订控制.