问题标签 [drake-r-package]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
r - 给一个字符串来定义 Drake 中的文件依赖
我正在学习drake来定义我的分析工作流程,但我无法将数据文件作为依赖项。
file_in()
我在里面使用了这个函数,drake_plan()
但它只有在我直接给出文件的路径时才有效。如果我给它一个file.path()
函数或一个存储该文件路径的变量,它就不起作用。
例子:
工作计划:
该计划运行良好,文件data/iris.csv
被视为依赖项
不工作计划:
这里它试图读取文件iris.csv
而不是data/iris.csv
.
工作但依赖问题:
最后一个工作正常,但该文件不被视为依赖项,因此如果此文件更改,drake 不会重新运行计划。
那么,有没有办法从变量中分辨出 Drake 文件的依赖关系?
r - R drake 带有变量的文件名
我正在使用drake
创建多个输出文件,我想通过变量指定路径。就像是
但file_out
除了文字字符之外,似乎不适用于给它的参数。
举一个小代码示例:
代码设置
工作代码
直接指定文件:
失败代码
用于file.path
构造输出文件
我猜德雷克只找到文字字符串作为目标,而不是结果file.path(...)
,例如,这也失败了
知道如何解决吗?
r - 您可以使用 R 包 drake 制定多个计划吗?
我知道使用在笔记本工具中调用的 R 包 不是最佳实践drake
,但无论如何我都会这样做,以解决我们团队在工作中的协作基础架构的限制。由于我的代码被分解成块分布在笔记本的各个部分,因此有多个分析计划会很有用,我将在适当的部分执行这些计划,并且可以在笔记本的后续部分中编写和执行其他计划. 是否可以编写多个计划drake
?
r - 在多行文本上打印单个 tibble 行
有时需要tibble
在多行中打印一个字符串。示例:https ://github.com/ropensci/drake/issues/489 。drake
带有长命令的计划很难阅读。
可以pillar::pillar_shaft()
或类似的工具来实现更好的东西吗?我主要关心换行和缩进(可能使用styler
),但我也对语法高亮感兴趣,可能使用hightlight
and crayon
。
r - 为 Drake 中的所有输入组合生成工作流程计划?
我正在尝试创建一个工作流程计划,该计划将为my_function(x, y)
所有输入组合运行一些功能,my_dataset
但对于如何在不使用粘贴的情况下为德雷克的工作流程生成命令而陷入困境。
考虑:
输出:
上面的代码有效,但我使用 paste0 来生成函数调用。我认为这不是最佳的,而且扩展性很差。有没有更好的方法来生成这些计划?这可能不是一个德雷克问题,而是一个rlang
问题。
r - 停止德雷克计划使其重建之前已经建立的目标
我目前正在drake
运行一组 >1k 的模拟。我估计运行完整集大约需要两天时间,但我也预计我的计算机在此期间的任何时候都会崩溃,因为它已经崩溃了。
显然,停止该计划会丢弃任何已经构建的目标,因此本质上这意味着我不能将drake
其用于其预期目的。
我想我可以创建一个函数来实际编辑指定计划的 R 文件,以便drake
按顺序将目标添加到其缓存中,但这似乎完全不合时宜。
关于如何处理这个问题的任何想法?
编辑:实际问题似乎来自使用set.seed
我的数据生成函数内部。我知道drake
已经以确保可重复性的方式为用户执行此操作,但我认为如果我只是按照它们的方式保留函数,它不会改变任何东西,因为drake
将确保我选择的随机种子总是结束一样吗?猜不出来,但是由于我删除了该步骤,因此缓存很好,因此问题得到了解决。
r - 有没有办法“分块”德雷克输出来加速计划验证和显示?
我正在对一系列模型和参数值进行模拟。在这个时间点,我的drake
工作流程涉及超过 3000 个模拟data.frames
和相应的stanfit
对象。
当前尝试运行make
会导致计划执行开始前约 2 分钟的延迟。我认为这是因为drake
正在通过其缓存来验证计划中的哪些步骤需要更新。我想用某种方式让它知道它可以将所有这些模型表示为一个单一的整体输出块。我能做的是创建一个函数,将我的所有输出对象作为副作用写入,然后输出各种散列,以便drake
“愚弄”需要检查的内容,但此时我无法重组我的代码考虑到即将到来的截止日期和所涉及的处理时间。
类似地,为了使用依赖图,显示 3k+ 个对象使其无法使用。能够在单个“输出类型”组下折叠某些对象会很好。
drake-r-package - 如何在德雷克中引用以前的目标?
我想使用通配符生成一堆目标,然后有另一组引用这些原始目标的目标。我认为这个例子代表了我的想法:
所以我现在得到的是 5 个目标、4 个 sub_tasks 和一个 final_task。我正在寻找的是获得8个目标。4 个子任务(很好),还有 4 个基于这 4 个很好的子任务。
r - subcomponent(mode = "in") 用于多个源顶点
问题
在R 包中,是否有可以处理多个源顶点igraph
的有效实现和/或 BFS?subcomponent()
动机
drake
R 包将用户的工作流建模为相互依赖的对象和文件的 DAG。DAG 应该只包含用户的目标及其上游依赖项,因此drake
用于igraph::subcomponent()
消除多余的顶点。这种方法效率低下,因为v
参数必须是单个顶点,因此drake
最终会为用户想要构建的每个目标执行新的 BFS。
编辑:2019-01-10
drake
现在使用一种不同的方法,最终依赖于对adjacent_vertices()
. 该方法很笨拙,但速度提升实际上相当不错。仍然坚持更优雅和精致的东西。