除了长度为一个字符的向量外,我想覆盖switch
以使用符号。我在包A中包含了新的定义。在包B中,我依赖于包A并调用switch
而没有指定命名空间(例如A::switch
)。目前,B中定义的在其定义中使用switch
的函数使用基本版本。有没有办法强制他们使用A::switch
而不明确包含命名空间?
如果我在B中包含switch
的新定义,则包按预期工作。目前,B的NAMESPACE没有列出任何进口商品。
答案 0 :(得分:0)
switch
不需要字符向量。它需要一个“表达”。表达式传递给求值程序。所以它接受一个不带引号的R“名称”,我认为你的意思是“符号”,如果搜索树中有一个命名对象,则继续进行评估和匹配。
> a = 2
> switch(a , '1'='something', '2' = "else", "neither")
[1] "else"
a
接受了符号switch
,并且由于它被评估为数值,因此执行了位置匹配。如果它已经评估了一个字符,那么将选择其他版本的匹配。请参阅?开关和第2节:R语言定义中的对象。