从命名空间访问(导出)函数

时间:2012-09-02 04:17:53

标签: r namespaces

我知道在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并且必须假设两者都在同一个包中。 *看起来很羞怯*

1 个答案:

答案 0 :(得分:0)

我只是张贴这个以防止问题显示为无人接听,但很乐意接受另一个......

isTRUE("setTimeLimit" %in% ls(getNamespace("base"), all.names=TRUE))