我知道之前在 SO 上已经问过类似的问题,但是那里给出的解决方案似乎不适用于我的情况。我试图通过引用从其他命名空间导出的函数并避免require()
在函数中使用来遵循创建包的约定。我基本上是在试图防止一个函数运行时间过长。例如,
fun <- function(i){
require(R.utils)
setTimeLimit(elapsed=10, transient=TRUE) # prevent taking more than 10secs
return(i^i)
}
>fun(10)
工作正常,但如果我尝试:
require(R.utils)
fun <- function(i){
R.utils:::setTimeLimit(elapsed=10, transient=TRUE) # prevent taking more than 10secs
return(i^i)
}
>fun(10)
我得到:
Error in get(name, envir = asNamespace(pkg), inherits = FALSE) :
object 'setTimeLimit' not found
更改:::
为::
不会更改此行为。我愿意接受任何更简单的方法来实现相同的目标。require()
在函数内部进行调用真的很糟糕吗?非常感谢!
编辑:如果导入有效,那就太好了,谢谢。仍在开发中,所以想确保它会没事。
编辑:抱歉,它在基地里。不知道我是怎么错过的;我最初使用R.utils::evalWithTimeout
并且必须假设两者都在同一个包中。*看起来很害羞*