【发布时间】:2014-05-08 07:58:33
【问题描述】:
我想覆盖 switch 以使用除了长度为 1 的字符向量之外的符号。我将新定义包含在包 A 中。在包 B 中,我依赖包 A 并调用 switch 而不指定命名空间(例如 A::switch)。目前,在 B 中定义的在其定义中使用 switch 的函数正在使用基本版本。有什么方法可以强制他们使用A::switch 而不明确包含命名空间?
如果我在 B 中包含 switch 的新定义,则该包将按预期工作。目前,B 的 NAMESPACE 没有列出任何导入。
【问题讨论】:
-
导入包A应该可以解决问题。您的命名空间中应该有一个导入。这是一本好书:obeautifulcode.com/R/How-R-Searches-And-Finds-Stuff
-
你能解释一下“除了长度为一的字符向量之外还使用符号”是什么意思?什么符号不能是字符串?
-
@Carl,这正是覆盖开关的重点。即使每个符号都可以转换为字符向量,它也需要一个向量(符号不是)。例如,
switch(substitute(a), a = 1, 2)将引发错误,但switch(as.character(substitute(a)), a = 1, 2)将返回1。 -
好吧,我的错 - 我在想“时髦的 Unicode 字体”含义中的“符号”,而不是
typesymbol的Robjects。
标签: r dependencies package