我们假设我有一个带有自定义R函数的目录。
即,
myDir/f1.R
myDir/f2.R
如何将它们导入R,以便保留命名空间?
,即在R中打电话给我,我们称之为:
myDir::f1(<input>)
而不是f1(<input>)
,
这是在基础包中使用source时的默认行为。
答案 0 :(得分:0)
这并不能完全回答您的问题,但无论如何可能对您有所帮助: 我经常在日常工作中使用很多函数来源/使用,并且在全局环境中有如此多的函数定义真的很烦人。我的解决方案是将相关函数封装在一个返回列表的虚函数中:
myFunctionNameSpace <- function() {
function1 <- function(x) {
print(paste0("Function 1 was called with argument ", x))
}
function2 <- function(x) {
helperFunction1()
print(paste0("Function 2 was called with argument ", x))
}
helperFunction1 <- function() {
print("Helper function 1 was called.")
}
return(list(
function1 = function1,
function2 = function2
))
}
myFunctionNameSpace <- myFunctionNameSpace()
如果您获取上述代码,则会在您的环境中获得单个对象myFunctionNameSpace
。然后,您可以使用$
运算符调用函数:
myFunctionNameSpace$function1(17)
myFunctionNameSpace$function2(42)
请注意,这也隐藏了您不想导出的任何“辅助函数”。它还允许嵌套这样的“命名空间”,最后但并非最不重要的是,它与RStudios自动完成功能非常兼容。