2

私はここ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していたので、両方が同じパッケージに含まれていると想定していたに違いありません。*羊のように見える*

4

1 に答える 1

1

質問が未回答として表示されないようにするためにこれを投稿していますが、別の質問を受け入れて喜んでいます...

isTRUE("setTimeLimit" %in% ls(getNamespace("base"), all.names=TRUE))
于 2013-04-12T03:11:32.117 に答える