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

第一个从base附加时创建的包环境中获取函数:

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

第二个使用函数::从包命名空间中获取函数:

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

看看这需要多少函数调用。

如果您只需要一个函数一次,那么从命名空间中获取它可能会更有效。但是,如果您重复需要它或需要一个包中的多个功能,则应附加该包。

于 2013-08-02T09:40:08.080 回答