Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/69.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.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
如何编辑和调试R库源代码_R_Debugging - Fatal编程技术网

如何编辑和调试R库源代码

如何编辑和调试R库源代码,r,debugging,R,Debugging,我在R脚本中包含了一个名为blotter的库,其中有一个bug。有没有一种简单的方法可以让我编辑源代码以尝试调试该问题?这样的功能在2010年7月16日R的开发版本中实现: r-devel中添加了一个新的设施,供 包裹 其思想是将修改后的代码从包源代码插入到 运行包而不重新安装。所以我们可以改变,测试,改变, 快速循环等 该机制是评估一些源代码文件,返回 环境对象,它是代码的快照。由此 可以将环境、函数和方法插入到环境中 当前会话中包的名称。插入使用跟踪 机制,因此可以还原原始代码 一步式版本为

我在R脚本中包含了一个名为blotter的库,其中有一个bug。有没有一种简单的方法可以让我编辑源代码以尝试调试该问题?

这样的功能在2010年7月16日R的开发版本中实现:

r-devel中添加了一个新的设施,供 包裹

其思想是将修改后的代码从包源代码插入到 运行包而不重新安装。所以我们可以改变,测试,改变, 快速循环等

该机制是评估一些源代码文件,返回 环境对象,它是代码的快照。由此 可以将环境、函数和方法插入到环境中 当前会话中包的名称。插入使用跟踪 机制,因此可以还原原始代码

一步式版本为:

insertSourcemySourceFile.R,package=myPackage,functions=foo

有关更多详细信息,请参阅本文:

您的问题是:是否有一种简单的方法可以让我编辑源代码以尝试调试该问题?有一个显而易见的答案:使用来源,卢克

是一个包裹,你可以从那里得到。这是查看开源的标准方法,可能有助于修复bug。

查找跟踪和浏览器功能,它们是R中用于调试的基本工具。假设您想要编辑函数foo的源代码,然后说

trace("foo",edit=TRUE)

将在编辑器中打开foo的源代码供您更改。但是,这是用于交互式调试;包中的源文件不会更改。因此,一旦发现错误,您需要更改包源文件,以使更改永久化。

好的,我该怎么做?通常我可以直接称之为“图书馆”,我假设我无法处理这些资源。我下载了源代码,但是有将近40个文件。我是否对每个文件都单独运行“源代码”以将它们放入我的脚本中?@Ben McCann假设没有C或FORTRAN代码,您可以提取R文件,对其进行源代码生成,并在每次更改文件时从那里开始工作,您必须对其进行源代码生成或将其复制/粘贴到R中。一旦一切正常,您可以将文件复制回包二进制文件并构建它。我在这里的一篇博文中描述了一个快速逐步构建R包的过程:嗨!我下载了一个软件包,我知道我必须编辑的功能-我只是在所有文件中找不到它。这样做的正确方式是什么?你能给我指出正确的方向吗?我认为值得一提的是,一旦你有了经过编辑的源代码,你可以简单地将它分配给一个新函数。通过这种方式,您的代码明确表明您使用的是原始软件包的修改版本