可以通过将包名称放在函数调用之前(例如dplyr::left_join
,plyr::left_join
等)来避免来自库的函数发生命名空间冲突的潜在歧义,如here所述
如何为用户定义的功能实现这种明确性? (即不是来自库/软件包的库)。显然,如果函数名称不是来自软件包,则不能在软件包名称前添加
library(dplyr)
left_join <- function(x, y) { x + y }
dplyr::left_join(x,y) # Unambiguously calls left_join from dplyr
left_join(x, y) # Not clear whether from dplyr or user defined
如何明确调用用户定义的函数?
答案 0 :(得分:0)
这是我编写的虚拟函数。我尚未对其进行严格的测试,因此可能会损坏:
import_from_global<-function(what,...){
func<-get(what,envir=.GlobalEnv)
do.call(func,list(...))
}
测试:
select<-function(){
cat("using namespace .GlobalEnv\n")
print("Does nothing")
}
import_from_global("select")
结果:
using namespace .GlobalEnv
[1] "Does nothing"