【问题标题】:R, after modifying a function in a package, modifications are ignoredR,修改包中的函数后,修改被忽略
【发布时间】:2014-12-20 12:43:03
【问题描述】:

我在 RStudio 中创建了一个包含一些自定义函数的包。

当我更改此包中包含的函数中的某些内容时,我正在使用“构建”选项卡中的“构建和重新加载”来重建包,希望此操作“更新”它。

这通常可以完美运行。但是,有一个功能没有发生。 如果我打开 function.R 文件,修改就在那里;但是,当我从控制台或脚本调用它时,会加载旧版本。 我尝试了一些简单的东西,例如重新启动和“清理并重建”。 我尝试删除它、重建并再次添加它,但即使在这种情况下,令人惊讶的是,旧版本已加载。

我注意到这个函数与包中的其他函数看起来不同的唯一一点是: 我试图对此进行调查,但我仍然缺乏必要的一般理解,我什至不确定这种差异是否真的与问题有关。

备注1:全局环境为空,所以没有屏蔽函数。 备注2:search()路径为(包名是SDA,在第二位):

> search()
 [1] ".GlobalEnv"        "package:SDA"       "package:splines"   "tools:rstudio"     "package:stats"     "package:graphics"  "package:grDevices" "package:utils"    
 [9] "package:datasets"  "package:methods"   "Autoloads"         "package:base" 

注意:我正在使用包“devtools”进行开发。

【问题讨论】:

  • 重建后,您必须重新安装或更新原始软件包才能在调用library时使用新功能。你重新安装了吗? R 将继续使用旧包,直到它被更新
  • > install.packages("SDA") 安装包中的错误:更新加载的包 ----- 此外,这不能解释为什么重建只适用于其他功能而不适用于此特别的。
  • 您的函数在环境窗格中看起来不同的原因可能是它已被调用。如果您在包中调用另一个函数,您应该会看到它从 更改为窗格中的定义。 R 实际上不会实例化包中的函数对象,直到它们被调用。

标签: r function package rstudio devtools


【解决方案1】:

我只是来解决同样的问题。您要做的就是重新启动您的 R 会话。似乎R缓存了该功能,如果您detach并删除(remove.packages)包,然后安装(install.packages)并加载(require)它并不重要:您需要关闭会话,然后使用更改构建的包:

install.packages("path_to_package.tar.gz",repos=NULL,type="source")
require("package")

这对我有用。希望对您有所帮助。

【讨论】:

    【解决方案2】:

    我知道这是一个老问题,但我也遇到了同样的问题,我想我知道是什么原因造成的。如果您的全局环境中有一个与包中的函数同名的函数并且您重新构建包,则可能会调用全局环境中的函数而不是包中的函数。对我来说,点击“环境”选项卡中的“画笔”图标(即“从工作区清除对象”)然后重建包就可以了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-17
      • 1970-01-01
      相关资源
      最近更新 更多