使用Rcpp时需要RNGScope scope
?通常,您在使用C RNG功能时need it。在某些地方,您可以在使用Rcpp时看到它是not needed,Rcpp documentation中的示例使用它,Dirk Eddelbuettel use it的一些示例,而其他地方不喜欢this one或this没有。所以最后我很困惑......
何时需要,何时不需要?如果我使用Rcpp::runif()
,R::runif()
或R::unif_rand()
,会有所不同吗?我很感兴趣的是在R包中使用Rcpp而不是调用独立代码。
答案 0 :(得分:4)
简而言之:
RNGScope
为您自动化,因为它非常有用(而且通常很便宜)verbose=TRUE
(正如您在启用R::
时所看到的那样所以一般来说你不需要任何手动 - 除非你去真正的旧学校并直接编写所有代码,除了Rcpp提供的胶水。
如果您使用Rcpp,那么您是使用Rcpp Sugar
命名空间中的标量接口还是通过Rcpp::
使用矢量化RNGScope
onces无关紧要。 auto unmannedString = msclr::interop::marshal_as<std::string>(managedString);
将在那里为您服务。