2

我正在开发一个 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 遵循Coatless 教授推荐的最佳实践;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 RStudiolibrary(bigKRLS)在没有警告的情况下加载;bigKRLS()输出它已成功清理数据。除其他外,这意味着yX现在是big.matrix objects。然后是第一个“真正的”步骤:bigKRLS()调用bGaussKernel(),这是会话在两分钟左右后中止的地方。不过好像也没什么问题bGaussKernel()bGaussKernel()如果在一秒钟内从命令行调用,它运行得很好。事实上,如果你初始化每个bigKRLS()需要的变量,你就可以在 Windows RStudio 中运行它的所有代码。

Windows Rstudio 崩溃截图

目前,该软件包会检测何时使用 Windows RStudio 并安全退出该功能,将用户引导至 RGui。任何有关更好解决方法的建议将不胜感激!

4

1 回答 1

4

首先,Windows 上的问题与编译器无关。如果您设法正确安装了 RTools,那么使用RGUI一切顺利。相反,您遇到的问题似乎是 RStudio 将 Boost 用于他们的应用程序,该应用程序意外污染了对过程中包boost提供的命名空间的调用。RStudio,更何况@kevinushey,最近通过为 RStudio 创建一个自定义版本的 Boost 来解决这个问题,该版本位于. 可以在https://github.com/rstudio/rstudio/pull/1061更深入地找到此错误的详细信息和解决方案。BHrsessionrstudio_boost

长话短说,如果确实如此,只需检查 RStudio 版本是否>=1.1.129足够。为此,您首先需要获得RStudio 每日版本。有了这个,我们可以参考@DirkEddelbuettel 为他遇到这个问题的绝妙的anytime包派生的解决方案。具体来说,为了克服这个问题,他在包加载isRStudio()时添加了一个简短的函数,并在每次将数据传递到 C++ 之前调用该函数

@DirkEddelbuettel 使用的isRStudio()函数如下:

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

注意:使用eval(parse(text=...))是为了避免遇到包检查问题,例如...

.onLoad: no visible global function definition for ‘RStudio.Version’
Undefined global functions or variables:
    RStudio.Version
于 2017-04-06T07:25:51.830 回答