我正在开发我的第一个包,它针对的是刚接触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()函数解决,因此这是一个不同的问题。
我没有时间写完整的答案,但看看[Defaults包](http://cran.r-project.org/web/packages/Defaults/index.html)。 – 2013-03-17 14:00:13
默认值包已从CRAN中删除。 – russellpierce 2016-02-02 19:41:55