有很多关于Makefiles的好东西,以及很多痛苦的屁股。
在做各种项目的过程中(我是一名研究科学家,“data scientist”或其他什么)我经常发现自己从磁盘上的一些数据对象开始,从那些生成各种工件,生成来自这些工件的工件,等等。
如果我可以说“这个对象依赖于这些其他对象”,并且“这个对象是从这些对象以下面的方式创建的”,然后请求类似Make的框架来处理细节,这将是很好的。实际构建它们,找出需要更新的对象,将工作分配到多个处理器(如Make -j
选项),等等。 Makefile可以做到这一切 - 但是最大的问题是所有的动作都必须写成shell命令。如果我在R或Perl或其他类似的环境中工作,这是不方便的。此外,Make中强有力的假设是所有目标都是文件 - 有一些例外和解决方法,但如果我的目标是例如数据库中的行,这将非常痛苦。
要明确的是,我不是在使用软件构建系统。我对(通常更多?)处理工件依赖网络的事情感兴趣。
任何人都知道这些依赖网络的框架吗?看起来它可能是一个很好的数据科学工具,&直观地显示结果的生成方式等。
我最近看到的一个非常有趣的例子是IncPy,但它似乎在很长一段时间内没有被触及,而且它与Python非常紧密地结合在一起。它可能也比我希望的更加雄心勃勃,这就是它必须与Python紧密结合的原因。
对于这个模糊的问题感到抱歉,如果有些说明有帮助,请告诉我。
答案 0 :(得分:5)
今天宣布了一个名为“德雷克”的新系统,针对这种情况:http://blog.factual.com/introducing-drake-a-kind-of-make-for-data。看起来很有希望,虽然我还没有尝试过。
答案 1 :(得分:0)
Red-R有一个数据流编程的概念。我还没有尝试过。
答案 2 :(得分:0)
这个问题已经有好几年了,但我想在这里添加一个remake的链接是相关的。
来自GitHub存储库:
这里的想法是重新设想来自make的一组想法,但是为R构建。而不是对R的不同实例进行一系列调用(如果你在R脚本上运行make会发生这种情况),这个想法是在R会话中定义管道的各个部分。而不是语言不可知(就像制作必须),重拍是无懈可击的焦点。
它尚未在CRAN上,我没有尝试过,但看起来非常有趣。