r - utils:::fixInNamespace 是否会进行永久性更改?R
问题描述
我正在为脚本使用 3rd 方包,我想调整其中一个函数,以便将该函数创建的变量之一分配给全局环境。
我以前是这样做的
fixInNamespace("the_function","the_namespace","namespace:::the_function")
它打开了一个弹出窗口,我可以在其中添加我的一行代码
assign("global_variable", "variable", envir = .GlobalEnv)
它就像一个魅力,然后我可以编写脚本的其余部分来使用这个新形成的变量。一天后我尝试再次运行代码,但找不到全局变量,如果我运行
namespace:::the_function
它显示了没有我编辑的功能代码,为什么它恢复到以前的形式?fixInNamespace 不是永久性的吗?
谢谢,瑞安
解决方案
不,这不是永久性的。它将持续到再次加载命名空间。通常,命名空间会在整个 R 会话中保持加载,因此您的更改将持续到会话。(可以在不退出 R 的情况下卸载命名空间;在这种情况下,一旦卸载命名空间,您的更改就会丢失。)无论如何,下次加载包时,它将是命名空间的原始版本.
有几种方法可以使您的更改永久化,但这样做不是一个好主意。一种方法是assignInNamespace
从您的启动代码中调用(参见?Startup
可能性)。另一种方法是编辑 R 源代码,并构建您自己的 R 自定义副本。
从长远来看,这些都不是一个好主意。R 的某些未来版本可能会更改您已修改的功能,然后您最终会得到一个修改过的过时版本。
推荐阅读
- ruby-on-rails - 如何从 ruby on rails 中删除 https 和 http
- sql-server - SQL Server 多数据库安全问题
- python - 从 main 中的类调用函数
- scala - 使用带有子类型参数的超级方法
- python - 将python输出放入数据框中的问题
- matlab - 上下分屏实验
- node.js - 我想在运行 nightmare.js 后获取 gig 中的所有数据,但我不断得到 gig 未定义
- javascript - 将鼠标悬停在 Javascript 和/或 CSS 列表中的相应单词上时,如何显示不同的图像?
- python - 训练和验证的不同 Keras 增强
- oracle - 在 SQL Server 中有一个我想在 Oracle 中复制的计数器