我正在使用R套餐bigKRLS
。 bigKRLS
适用于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
取决于bigmemory
,Rcpp
,RcppArmadillo
和snow
(但问题是在最近添加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中运行其所有代码。
目前,package detects when Windows RStudio is being used and safely exits the function将用户改为RGui。任何有关更好的解决方法的建议都将不胜感激!
答案 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
函数anytime和on 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