我正在开发我的第一个包,它针对的是 R 新手,因此我试图尽量减少使用该包所需的 R 技能数量。因此,我想要一个函数来更改我包中其他函数的默认值。但是我收到以下错误“无法将绑定添加到锁定的环境”,这意味着包的环境被锁定,我不允许更改其函数的默认值。
这是一个引发类似错误的示例:
library(ggplot2)
assign(formals(geom_point)$position, "somethingelse", pos="package:ggplot2")
当我尝试 assignInNamespace 时,我得到: bindingIsLocked(x, ns) 中的错误:“身份”没有绑定
assignInNamespace(formals(geom_point)$position,"somethingelse", pos = "package:ggplot2")
这是我希望实现的一个例子。
default <- function(x=c("A", "B", "C")){
x
}
default()
change.default <- function(x){
formals(default)$x <<- x # Notice the global assign
}
change.default(1:3)
default()
我知道这远非推荐的方法,但我愿意偷工减料以改善包的学习曲线。有没有办法做到这一点?
此问题已被标记为Setting Function Defaults R on a Project Specific Basis的副本。这是一种不同的情况,因为这个问题涉及如何允许用户在交互式会话中更改函数的默认值 - 而不是如何实际执行。使用 options() 函数无法解决旧问题,因此这是一个不同的问题。