问题标签 [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.
drake-r-package - R {drake}:如何将 .drake 文件夹从一台计算机克隆到另一台计算机?
我成功地在远程计算机上运行了一个复杂的工作流程。在那里,我可以检查所有内容是否都是最新的,并毫无问题地探索结果。
我想将 .drake 文件夹移动到我的本地计算机,以便更轻松地浏览结果。
当我这样做(通过跨机器复制和粘贴文件夹)时,我面临的问题是本地会话认为我的所有目标都已过时。本地计算机中指向的 .drake 文件夹drake_cache()
是正确的,所以我不明白发生了什么。
r - 德雷克静态分支:如何在 map() 中使用 .id 来增加依赖图的可见性
我正在使用德雷克工作流程来处理约 100 个文件,这些文件存储在一个文件名很长的位置。这些长文件名使依赖图难以阅读。这是一个最小的例子:
我已阅读以下.id
内容?transformations
:
符号或符号向量命名分组变量以合并到目标名称中。用于创建短目标名称。设置 .id = FALSE 以使用整数索引作为目标名称后缀。
这就是我ids
在上面的代码中创建以便为目标提供短名称的原因。但是如下更改计划并没有帮助:
据我了解,ids
是一个符号向量,所以我不明白为什么这不起作用。我错过了什么?这甚至可能吗?
我也尝试ids
作为字符向量插入,但没有成功。我知道我可以设置.id = FALSE
为简单地枚举 raw 的元素,但我真的想保留文件名。
r - 正确使用 drake::expose_imports() - 在哪里拨打电话 - 它是递归的吗?
概括
我注意到drake
文档中的提示/建议/警告建议使用expose_imports
来确保可重复地跟踪导入包中的更改,但是文档中关于正确使用的内容相对简短。
例子
我现在目睹了一个行为示例,expose_imports
旨在纠正我自己对 的使用drake
,我想开始使用它。
在我的情况下,未跟踪的依赖项是forcats
,它在版本0.4.0
中有一个错误fct_collapse
(由我的一个函数使用),它会将不正确的组分配给输出因子。
0.4.0.9000
解决了这个错误,我在0.4.0.9000
一段时间前更新到 ,但确实注意到必须针对旧版本运行的目标没有失效。
问题
我猜这是一个expose_imports
可以缓解的问题,但我真的不明白如何/在哪里使用它。
my.package
如果我像这样在我的drake
计划中进行范围调用:
并且my.package::transform_mtc()
对另一个包有一些依赖,(例如forcats
)然后:
- 我应该在哪里打电话
expose_imports
?- 在
prework
?make
_ - 在文件的顶层
my.package/R/
?
- 在
- 我应该打电话吗
expose_imports("my.package")
? 或者expose_imports("forcats")
对此进行一些澄清会很棒
r - 德雷克管道实验的最佳实践
我是德雷克的新手,但到目前为止我很喜欢它。我遇到的一件事是如何最好地尝试不同的管道配置。也就是说,我的计划纯粹由一系列目标组成,其中第一个目标的输出是第二个目标的输入,第二个形成第三个目标的输入,依此类推。我的目标都具有相同的基本结构(带有小标题的动态目标作为单个条目)预期作为输入并作为输出提供,并且我想尝试不同的顺序,包含/排除某些步骤等。例如:
到目前为止,我使用 drake 的方式是每个目标都有一个唯一/有意义的名称,因此,例如,当我删除一个目标时,我必须重命名提供给后续目标的输入:
希望有一种更好的实验方法不需要手动注释和重命名是不是太过分了?
r - 动态分支:将目标的顺序定义为单个计划
阅读 drake 包的文档,我发现没有其他方法可以在不使用“file_in”和“file_out”的情况下定义目标的顺序。
file_in() 标记目标所依赖的单个文件(和整个目录)。
file_out() 标记目标创建的单个文件(和整个目录)。
但是,不可能将两者都与动态目标一起使用。
那么如何定义动态目标之间应该遵循的顺序呢?我也试过用make(plan, targets = c("ftp_list", "download.dbc", "dbc_list", "generate_parquet"))
,但没用
例如,在下面的代码中,我有四个目标。我想要什么(订购):
- 从服务器获取 ftp 列表
- 从 ftp 列表中下载第一个文件(高清空间很少可以全部下载)
- 获取下载的文件
- 转换为 .parquet(然后重新开始。下载第二个文件,转换为 parquet...)
知道如何在不使用 file_in 和 file_out 的情况下链接动态目标(在这种情况下不允许)?谢谢!
代码仅作为示例:
计划图输出:
r - 将函数视为数据(如将函数与数据集捆绑) - 最佳方法
我有一个工作流,我针对基本相同数据集的变体运行(它是一个 emr 提取,有时我针对批量提取的迭代运行,有时针对测试提取的迭代)。
这些数据集(应该是)同质的,并且通常具有相同的处理要求。
也就是说,在我将项目迁移到 drake 之前,已经对其中一个测试数据集的一个子集执行了很多分析,有时是半交互式的,几乎不能保证可重复性。
尽管通常在我的数据集中我不希望根据分析师开始时使用的相同标准过滤数据集,但对于某些数据集,它有助于验证工作流实际上是否为与原始分析相同的输入产生相同的结果.
分析人员可能使用的起始过滤器示例:
给定的数据集与项目代码完全分开存储在包含该数据集的 drake_cache 的目录树和原始数据的子目录中。
那么我的问题是 - 将这样的功能导入我的工作流程的好方法是什么,而不是静态声明的导入?
rvest - 将 rvest 与 drake 一起使用:外部指针无效错误
当我第一次运行下面的代码时,一切正常。但是当我在命令中更改某些内容时html_file %>%...
,例如 commenting tolower()
,我收到以下错误:
代码:
我找到了两种可能的解决方案,但我对它们并不感兴趣。
1. 将两个步骤合二为一drake_plan
。
2.按照这里的建议使用xml2::write_html()
and 。
有没有更好的方法来解决它?PS 问题已在此处、Rstudio 论坛和github上讨论过。xml2::read_html()
drake-r-package - 对 drake 工作流程的自定义函数进行单元测试的最佳实践
一个 Drake 工作流可以在其 R 目录中存储多个自定义函数。为自定义函数开发单元测试是有意义的。有完善的工具和结构可用于在 RStudio(或从命令行)中对 R 包进行单元测试的运行测试。
- 但是,在 drake 工作流程中为自定义函数开发和运行单元测试的最佳实践是什么?
任何指向资源或示例的指针将不胜感激。谢谢!
r - 如何在德雷克中使用闪亮的应用程序作为目标
如何将前一个目标 ( df
) 传递给我在下一个命令中使用的ui
函数。我的计划是这样的:server
shinyApp
ui
并server
从闪亮的教程中复制。只有一个区别 - 我改为faithful
(df
上一个目标中的数据)。现在我收到一个错误:
如何解决这个问题?最佳做法是什么?
drake-r-package - 是否可以从动态分支目标中拆分子目标,以便以后的动态分支目标仅获得一个子子目标?
我有一个类似的计划:
该函数f1
实际产生多个输出块的位置(例如,在列表中),我希望在targ2
计算时分别处理这些多个块。这可能吗?
这是一个最小的例子:
在编码的地方,德雷克在处理过程中出现错误,targ2
因为每个子目标中的列表targ1
尚未分解。显然我可以重写f2
以遍历列表,但这是出于演示目的,在我的实际用例中,有充分的理由想要简单地将结果从targ1
.
我以为我已经解决了:
但在我的实际用例中,每个子目标都占用大量内存,并且计算targ2
似乎需要将它们全部放入内存,导致我的机器内存不足时锁定。
我已经制定了一个技巧,我将 targ1 中每个子目标的各个列表元素保存到文件中,然后list_files()
搜索所有这些文件作为以后目标的输入,但也许有一个更简单的方法?
这是“有效”但肯定不太理想的黑客: