RcppArmadillo + bigmemory崩溃Windows RStudio(但没有其他GUI + OS.type)

时间:2017-04-06 06:44:48

标签: rstudio rcpp r-bigmemory

我正在使用R套餐bigKRLSbigKRLS适用于Windows RGui,但在Windows RStudio上遇到致命错误。一些细节...

Windows RGui可以工作,但Windows RStudio遇到致命错误;使用R 3.3.0,3.3.1,3.3.3在四台不同的机器上确认; RTools 3.3和3.4遵循best practices recommended by the Coatless Professor; RStudio 1.0.136; Windows 7和8.目前,bigKRLS适用于Mac OS X Yosemite和Ubuntu 14.04的RStudio,没有问题。

bigKRLS取决于bigmemoryRcppRcppArmadillosnow(但问题是在最近添加snow之前的问题,可以通过设置bigKRLS(..., Ncores = 1)来禁用它以进行测试。

devtools::install_github('rdrr1990/bigKRLS')
library(bigKRLS)
vignette("bigKRLS_basics")

set.seed(2017)
X <- matrix(runif(60), ncol=3)
y <- X %*% 3:1 + rnorm(20)
out <- bigKRLS(y, X)
summary(out)

上面的代码产生的模型估计值以R2 = 0.663开始(我们当然估计在其他平台上有更复杂的模型)。

Windows RStudio在没有警告的情况下加载library(bigKRLS); bigKRLS()输出已成功清理数据。除此之外,这意味着 y X 现在是big.matrix objects。然后第一个&#34;真正&#34;步骤:bigKRLS()调用bGaussKernel(),这是会话在两分钟左右后中止的地方。但bGaussKernel()似乎没有任何问题。如果在一秒钟内从命令行调用,bGaussKernel()运行正常。实际上,如果初始化bigKRLS()所需的每个变量,则可以在Windows RStudio中运行其所有代码。

Windows Rstudio crash screenshot

目前,package detects when Windows RStudio is being used and safely exits the function将用户改为RGui。任何有关更好的解决方法的建议都将不胜感激!

1 个答案:

答案 0 :(得分:4)

首先,Windows上的问题与编译器无关。如果您设法正确安装了RTools,那么使用 RGUI 的一切进展顺利。相反,您遇到的问题似乎是RStudio对其应用程序使用了Boost,这些应用程序意外地污染了boost rsession命名空间中对rstudio_boost命名空间的调用过程。 RStudio,更是如此@kevinushey,最近通过创建一个位于>=1.1.129内的RStudio Boost的自定义构建来解决这个问题。可以在BH更深入地找到此错误的详细信息和解决方案。

长话短说,如果确实如此,只需检查RStudio版本是否isRStudio()就足够了。为此,您首先需要获得https://github.com/rstudio/rstudio/pull/1061。有了这个,我们可以参考@DirkEddelbuettel为其出色的RStudio daily version包导出的解决方案。具体来说,为了解决这个问题,他添加了一个简短的isRStudio <- if (Sys.getenv("RSTUDIO", unset="0") == "1" && exists("RStudio.Version") && ## the following is evil but keeps R CMD check off our back eval(parse(text=paste("RStudio.Version()$Version", ">=", "\"1.1.129\"")))) TRUE else FALSE 函数anytimeon package load

使用calls the function each time before handing data off into C++ @DirkEddelbuettel用作:

eval(parse(text=...))

注意:使用.onLoad: no visible global function definition for ‘RStudio.Version’ Undefined global functions or variables: RStudio.Version 是为了避免遇到包检查问题,例如......

webpack