我知道之前有人问过类似的问题 here on 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
并且必须假设两者都在同一个包中。 *看起来很害羞*
最佳答案
我只是发布这个以防止问题显示为未回答,但会很高兴接受另一个......
isTRUE("setTimeLimit" %in% ls(getNamespace("base"), all.names=TRUE))
关于r - 从命名空间访问(导出)函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12233361/