Version control 你是如何组合的;修订控制“;加上;“工作流程”;为了R?

Version control 你是如何组合的;修订控制“;加上;“工作流程”;为了R?,version-control,r,workflow,statistics,Version Control,R,Workflow,Statistics,我记得遇到过R用户,他们写道他们使用“修订控制”(),我很想知道:如何将“修订控制”与统计分析工作流程结合起来 两个(非常)有趣的讨论讨论了如何处理工作流。但它们都不涉及修订控制元素: 问题的长时间更新:下面是一些人的回答,以及评论中德克的问题,我想进一步说明我的问题 在阅读了关于“”的Wiki文章(我以前不太熟悉)后,我清楚地意识到,在使用修订控制时,我们要做的是构建代码的开发结构。这种结构要么导致“最终产品”,要么导致几个分支 比如说,当你建立一个网站的时候。通常有一个最终产品你的工

我记得遇到过R用户,他们写道他们使用“修订控制”(),我很想知道:如何将“修订控制”与统计分析工作流程结合起来

两个(非常)有趣的讨论讨论了如何处理工作流。但它们都不涉及修订控制元素:

问题的长时间更新:下面是一些人的回答,以及评论中德克的问题,我想进一步说明我的问题

在阅读了关于“”的Wiki文章(我以前不太熟悉)后,我清楚地意识到,在使用修订控制时,我们要做的是构建代码的开发结构。这种结构要么导致“最终产品”,要么导致几个分支

比如说,当你建立一个网站的时候。通常有一个最终产品你的工作(网站),与一些原型沿途

但在做统计分析时,工作(在我看来)是不同的。有时候你知道你想去哪里。但更多的时候,你需要探索。探索清理数据集。探索不同的统计分析方法,对你的数据提出各种各样的问题(我写这篇文章,是为了了解弗兰克·哈雷尔和其他有经验的统计学家对数据的看法)

这就是为什么统计编程的工作流问题(在我看来)是一个严肃而深刻的问题,会引发许多问题,更简单的问题是技术性的:

  • 您使用哪种版本控制软件(以及为什么)
  • 您使用哪种IDE(以及为什么使用)? 更有趣的问题是关于工作流程:
  • 你如何组织你的文件
  • 你把什么作为一个单独的文件保存,什么作为一个修订?或者以另一种方式提问——在代码中什么应该是“分支”,什么应该是“子项目”?例如:当开始探索数据时,是否应该创建一个绘图,然后将其删除,因为它没有指向任何位置(但作为修订版保存),或者是否应该有该路径的备份文件
你如何解决这种紧张关系是我最初的好奇心。第二个问题是“我可能遗漏了什么?”。在使用版本控制进行统计编程时,应该遵循哪些(经验)规则来避免常见的陷阱

在我的直觉中,我觉得统计编程与软件开发有着本质的不同(我写这篇文章时并不是统计编程方面的真正专家,在软件开发方面更是如此)。这就是为什么我不确定我在这里读到的关于版本控制的哪些课程是适用的

非常感谢,
Tal

我正在使用git进行版本控制。我的典型目录结构(例如文章目录)如下所示

.
..
.git
README
README.html
ana
dat
doc
org

大多数目录/文件(ana、doc、org)都受版本控制。当然,大型二进制数据集被排除在版本控制之外(通过.gitignore)。自述文件是一个Emacs组织模式文件。

我自己使用git。本地存储库,存储在与R项目相同的目录中。这样,如果我删除了一个项目,存储库也会随之删除;我可以离线工作;我没有IRB,FERPA,HIPPA的问题要处理

如果我需要增加备份保证,我可以git到远程(安全的!)存储库


-Wil

我的工作流程与Bernd的没有什么不同。我通常有一个主目录,我把所有的*.R代码文件放在那里。当我在一个文本文件中有大约5行以上的内容时,我就会启动版本控制,在我的例子中是git。我的大部分工作不在团队环境中,这意味着我是唯一一个更改代码的人。一旦我做了实质性的改变(是的,这是主观的),我就会办理登机手续。我同意德克的观点,这个过程与工作流程是正交的

我使用Eclipse+StatET,虽然Eclipse中有一个git插件(可能还有其他插件),但我不使用它。我在Windows中,只使用git gui for Windows。给你

在版本控制中,个人特质有很大的发展空间,但我建议将这一技巧作为最佳实践:如果你向他人报告结果(即,杂志文章、团队、公司管理层)总是在向他人报告结果之前进行版本控制签入。通常,3个月后,有人会查看您的结果并询问一些关于代码的问题,除非您知道生成这些结果时代码的确切状态,否则您无法回答这些问题。因此,将其作为一种实践,并在注释中添加“这是我用于第四季度财务报告的代码版本”或任何您的用例

还要记住,版本控制并不能取代好的备份计划。我的座右铭是:“3份拷贝,2个地理位置,1个心平气和。”


编辑(2010年2月24日):Stack Overflow的创始人之一乔尔·斯波尔斯基(Joel Spolsky)刚刚发布了一个新版本。如果您尚未选择版本控制系统,本教程可能是采用Mercurial的原因。我认为当谈到Git和Mercurial时,最重要的建议是选择一个并使用它。也许使用你的朋友/同事使用的,或者使用最好的教程。但是只要已经使用一个就可以了!;)

与其特别关注修订控制,不如说你真的在问一个更大的问题:统计分析与软件开发相比如何。这是一个有趣的问题。以下是一些想法:

数据分析更像是一门艺术,而不是一门科学。从某种意义上说,您可能更希望从作者写书时遵循的过程中寻找灵感,而不是软件开发人员遵循的过程。另一方面,我还没有遇到一个遵循直线的软件项目。即使在理论层面上,也存在大量的差异