小编Ber*_*ool的帖子

计算时间!=

我想知道a!=0!a==0使用R包microbenchmark 快多少.这是代码(如果你的电脑很慢,减少3e6和100):

library("microbenchmark")
a <- sample(0:1, size=3e6, replace=TRUE)
speed <- microbenchmark(a != 0, ! a == 0, times=100)
boxplot(speed, notch=TRUE, unit="ms", log=F)
Run Code Online (Sandbox Code Playgroud)

每次,我得到一个类似下面的情节.正如所料,第一个版本比第二个版本(33毫秒)更快(中位数为26毫秒).

但这几个非常高的值(异常值)来自哪里呢?是一些内存管理效果?如果我将时间设置为10,则没有异常值......

编辑:sessionInfo():R版本3.1.2(2014-10-31)平台:x86_64-w64-mingw32/x64(64位)

计算时间不等,not_equal

r microbenchmark

6
推荐指数
1
解决办法
128
查看次数

R命令查看包readme.md

utils::news(package="mypack")打开新闻文件。

是否还有打开 R 包的 README.md 文件的命令?

r

6
推荐指数
0
解决办法
367
查看次数

在par(图)之后,边距中的文字不会被写入

par(fig)使用原始参数设置图形参数并重置它们后,不会写入图表边距中的文本.只有在另一个低水平命令进行绘图区域将再次工作.这是一个例子:

dev.off()
plot(1:10)
op <- par(no.readonly = TRUE)  
mtext("hello", adj=1, col=2)           # written as expected
par(fig=c(0.1,0.6,0.5,0.8), new=TRUE)  
par(op)
mtext("hello ", adj=1, col=3)          # not written
mtext("hello ", adj=1, col=3, line=-1) # works inside plot region
mtext("hello ", adj=1, col=3)          # still not written
text(50,20,"") # or abline             # do something inside plot region
mtext("hello         ", adj=1, col=3)  # now it works!
Run Code Online (Sandbox Code Playgroud)

这可能与我在par(图)之后发布的另一个问题有关,mtext略有偏离.

此外mtext,axis也行不通.此外text/abline/points,title(main="dummy")还解决了这个问题.

这可能是一个R bug吗?或者我错过了什么?

plot r

5
推荐指数
1
解决办法
144
查看次数

不可重复的R包可用性检查

在检查包矢量是否需要安装时,我遇到了一个有趣的错误.请求和卸载lme4命名空间会在第二次执行时出错,但仅在按特定顺序检查某些其他包时才会出错.

isInstalled <- function(package)    # is a package installed and usable?
  {
  loaded <- package %in% .packages()
  out <- requireNamespace(package, quietly=F)
  if(!loaded) try(unloadNamespace(package), silent=F)
  out
  }

isInstalled("car")      # All return TRUE
isInstalled("nnet")
isInstalled("pbkrtest")
isInstalled("lme4")
isInstalled("nloptr")
isInstalled("lme4")     # FALSE (only after commands above)
# no such symbol NLoptR_Optimize in package C:/__Rlibrary/nloptr/libs/x64/nloptr.dll
library(nloptr) # now fails, too

# Problem solved if nnet is checked before car (but not again after car)
Run Code Online (Sandbox Code Playgroud)

我做错了isInstalled吗?

这可能与.的依赖结构有关car.简化版: 简化汽车依赖图

#install.packages(c("miniCRAN","igraph"))
d <- miniCRAN::makeDepGraph(c("car", "nnet", …
Run Code Online (Sandbox Code Playgroud)

r

5
推荐指数
1
解决办法
260
查看次数

如果在函数内,evalq 如何在正确的环境中获取文件

我有一个在其父环境中获取脚本的函数。以下内容按预期工作:

cat("aa <- 77", file="script.R")
runScript <- function() source("script.R", local=parent.frame())

env <- new.env()
evalq(runScript(), envir=env)
ls.str(envir=env) # as expected: aa in env, not in globalEnv
rm(env)
Run Code Online (Sandbox Code Playgroud)

当我将其包装在函数中时,环境似乎被忽略:

thisfails <- function(expr){
  env <- new.env()
  evalq(expr, envir=env)
  ls(envir=env)
}

thisfails(runScript()) # why is aa in globalEnv?
rm(aa)
Run Code Online (Sandbox Code Playgroud)

现在我可以用 来理解这一点eval,但不能用 来理解evalq,正如手册所说:eval 在将其传递给求值器之前评估当前作用域中的第一个参数: evalq 避免了这种情况。

有趣的是,这有效:

works <- function(){
  runScript()
  ls()
}
works() # as expected: returns aa, doesn't create it in globalEnv
Run Code Online (Sandbox Code Playgroud)

如何在函数内使用 runScript 作为表达式并避免在 globalEnv 中对其求值?

r

4
推荐指数
1
解决办法
56
查看次数

标签 统计

r ×5

microbenchmark ×1

plot ×1