【发布时间】:2020-03-17 16:55:42
【问题描述】:
我通常会做一个标准的 reprex、SO post、冲洗和重复,但这是一个很难复制的。我会尽量描述我的问题。
背景
我正在尝试在 R 中构建一个自定义包,我简单地称之为myTools。构建运行没有错误,并且所有功能都可以正常工作(+/- 我需要完善的一些事情)。它只是我发现对我的工作有帮助的一组函数。我有一个特定的函数get_data(),它读取一个 CSV 文件并清理它(它是一个人类可读但完全不整洁的数据集)。该函数将其清理并整理数据(例如,将 Invoice 转换为整洁的数据集)。
问题
每次我编译包并测试函数get_data() 时,R 都会以某种方式运行该函数的旧版本。我已经手动逐一运行函数中的行,代码的结果没有错误并返回预期的整洁数据集。但是,如果我在控制台中调用编译后的get_data(),则会调用该函数的旧版本。
注意事项
我在函数中添加了一个简单的行print("Hello Bob!")。构建和安装后它不会显示在输出中。同样,更多的证据表明 R 似乎在使用我的函数的一些旧源并且正在编译那个源。
pkgbuild::find_rtools() 返回TRUE
我关闭了构建项目,打开了一个新的 RStudio/R 会话。将我的库加载到一个空白脚本文件中。在 ctrl-click 函数get_data() 后,RStudio 确实将我带到了该函数的旧版本。
预期结果
get_data() 的新编译版本将在控制台/脚本中调用。
感谢任何提示和尝试的想法。谢谢!
【问题讨论】:
-
你说你建造它。你真的安装了新版本吗?
-
@Dason 是的,在 RStudio > Build > Clean and Rebuild,然后我 Build > Install and Restart
-
你是如何重新编译包的,你是如何测试功能的?你得到的这些步骤的确切输出是什么?没有任何可重现的例子,几乎不可能说出可能发生的事情。
-
我不知道这是否适用于您的工作流程,但是当我遇到类似的问题时,我发现我之前已经
devtools::install'd 包并且没有更新它。即使我随后使用devtools::load_all,我也不确定所有R 实例将始终使用load-all'd 版本。查找先前安装的软件包的路径(来自.libPaths())并移动/删除错误路径可能会有所帮助。 -
@r2evans 谢谢你的工作。我按照您的建议使用了
.libPaths(),从库目录中删除了myTools,重新构建,重新安装。在职的!随时发表您的评论作为解决方案,我会将其标记为官方(如果需要)