Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将导入包与drake一起使用_R_Drake R Package - Fatal编程技术网

将导入包与drake一起使用

将导入包与drake一起使用,r,drake-r-package,R,Drake R Package,了解drake的package是R用户最新的发现之一。然而,在可再现性方面,我看到该软件包的一个缺点是工作空间中的函数杂乱无章,这些函数仅仅是辅助函数 没有人知道这些源d函数是否冲突,或者库调用的顺序是否重要。我知道有冲突的包,但它只处理包。 我知道R中的代码单元应该是一个包,但是用一些文件(如preprocessing.R,training.R)进行分析并将它们转换成一个包似乎很奇怪。不管怎么说,潜在的名字冲突很早就开始了,我从来没有见过有人提出一个干净的R 但是,有一个包允许从其他文件导入包

了解drake的
package
是R用户最新的发现之一。然而,在可再现性方面,我看到该软件包的一个缺点是工作空间中的函数杂乱无章,这些函数仅仅是辅助函数

没有人知道这些
d函数是否冲突,或者
调用的顺序是否重要。我知道有冲突的包,但它只处理包。 我知道R中的代码单元应该是一个包,但是用一些文件(如
preprocessing.R
training.R
)进行分析并将它们转换成一个包似乎很奇怪。不管怎么说,潜在的名字冲突很早就开始了,我从来没有见过有人提出一个干净的R

但是,有一个包允许从其他文件导入包函数和函数/变量。假设您在
a.R
中有函数
a
,然后使用
import
导入该函数。该函数是可访问的,但其所有依赖项对函数
a
可用,但未导入,从而提供了有用的隔离


我使用
import
包和
drake
进行了测试,但是
drake
没有检测到导入函数的依赖关系是否发生了变化,从而破坏了它的实际用例。有人知道如何让drake对这些函数进行“深入研究”吗,或者知道如何让它工作吗?提前谢谢

根据设计,
drake
只跟踪
make()
环境中的函数,您可以使用
envir
参数设置这些函数(加上使用
pkg::fun()
调用的命名空间函数,但构建该功能是一个错误)<默认情况下,code>envir只是调用环境(
parent.frame()
)。因此,当您使用
import::from()
时,请确保将
.into
设置为等于
,以便将内容带入
drake
的环境中

ls()
#>字符(0)
导入::从(dplyr,mutate,.into=”“)
ls()
#>[1]“变异”
图书馆(德雷克)

谢谢你的回答!我在这里添加了一个完整的示例:问题是不是从
helpers.R
导入的函数不受
drake
的监控。因此,如果我更改未导入的函数输出的数字,
drake
仍然报告所有内容都是最新的。我假设没有简单的解决方法,因为这些函数从来也不应该出现在全局环境中,因此
drake
需要了解
import::here
的特殊含义,您可以在顶级函数上递归,使用
codetools::findGlobals()
在每个阶段检测嵌套函数。或者将功能请求提交到
import
,以在本地实现该功能。否则,这将需要额外的工作。您可以
source()
所有脚本,使用
vis\u-drake\u-graph()
检测嵌套的函数依赖关系,并将所有这些关系移动到更整洁的R脚本中。<>代码> Rclean < /Cord>包试图对基于脚本的工作流进行自动化。组织代码是故意在代码> > DRAKE 范围之外的,并且我不认为这是一个工具,用户仍然可能编写乱码。每当我们编写代码时,我们都必须处理组织和命名事物的任务。这是一项我们可以做得更好的技能。在drake
的源代码(以及其后续函数的源代码)中,每个顶级函数都有自己的脚本文件,其中包含其所有助手,每个助手都有一个信息前缀,以指示其支持的顶级函数。在许多顶级函数中广泛使用的帮助程序都包含在
utils-*.R
脚本中。感谢前缀的建议,这对组织肯定有帮助。因此,简而言之,需要修改drake以了解导入的本地函数可以依赖于其他未导入的本地函数