相关疑难解决方法(0)

R写作风格 - 需要与::

好吧,我们都熟悉R中的双冒号运算符.每当我要写一些函数时,我都会使用require(<pkgname>),但我一直在考虑使用::.require在自定义函数中使用是比更好的做法library,因为require返回警告,并且FALSE,library如果提供不存在的包的名称,则会返回错误.

另一方面,::操作员从包中获取变量,同时require加载整个包(至少我希望如此),因此速度差异首先出现在我的脑海中.::必须快于require.

我做了一些分析,以便检查 - 我写了两个简单的函数,read.systatforeign包中加载函数require,::分别使用和导入Iris.syd数据集,包含foreign包,每个复制函数1000次(这是无耻的任意),和. ..打了一些数字.

奇怪(或没有)我发现在用户CPU和经过时间方面存在显着差异,而在系统CPU方面没有显着差异.然而更奇怪的结论::是:实际上更慢!文档::是非常生硬的,只是通过查看来源,显然::应该表现更好!

要求

#!/usr/local/bin/r

## with require
fn1 <- function() {
  require(foreign)
  read.systat("Iris.syd", to.data.frame=TRUE)
}

## times
n <- 1e3

sink("require.txt")
print(t(replicate(n, system.time(fn1()))))
sink()
Run Code Online (Sandbox Code Playgroud)

双结肠

#!/usr/local/bin/r

## with ::
fn2 <- function() {
  foreign::read.systat("Iris.syd", to.data.frame=TRUE) …
Run Code Online (Sandbox Code Playgroud)

namespaces packages r

19
推荐指数
2
解决办法
4948
查看次数

标签 统计

namespaces ×1

packages ×1

r ×1