5

名前空間を指定したR方が作業が減ると思ったのですが、おそらく間違っています

library(microbenchmark)
> microbenchmark(unique.default(c(1,1:10)),base::unique.default(c(1,1:10)))
Unit: microseconds
                             expr    min     lq  median     uq    max neval
       unique.default(c(1, 1:10))  3.528  3.849  4.0095  4.170 12.509   100
 base::unique.default(c(1, 1:10)) 11.546 12.188 12.5090 12.829 59.012   100
4

1 に答える 1

8

base1 つ目は、がアタッチされたときに作成されるパッケージ環境から関数を取得します。

> "unique.default" %in% ls("package:base")
[1] TRUE

2 つ目は、関数を使用::して、パッケージの名前空間から関数を取得します。

> `::`
function (pkg, name) 
{
    pkg <- as.character(substitute(pkg))
    name <- as.character(substitute(name))
    getExportedValue(pkg, name)
} 

これが必要とする関数呼び出しの数を見てください。

関数が一度だけ必要な場合は、名前空間から取得する方が効率的かもしれません。ただし、繰り返し必要な場合やパッケージの複数の機能が必要な場合は、パッケージを添付する必要があります。

于 2013-08-02T09:40:08.080 に答える