问题标签 [rcpp11]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
166 浏览

regex - Rcpp C++11.Windows下调用问题

在 Windows 上运行使用 Rcpp 构建的函数时,我遇到了 .Call 问题,如果我的 c++ 代码使用 C++11std::regex并且到目前为止我还没有找到出路。

与之前关于类似问题的问题不同,我既没有构建问题也没有链接问题。Rcpp 包使用 C++11 插件构建和链接良好,在我的平台上制作可用的包。constexpr和 C++11 特定的函数,如不使用std::stoi时不会出现问题std::regex

使用 Windows boost 库时,我遇到了链接问题,即使在指定 PKG_LIBS="-L/path/to/boost/libs -lboost_regex" 时也是如此,所以我宁愿坚持使用std::regex.

使用 vanilla std::regex 或 boost::regex,相同的包在 linux 下构建、安装和运行良好。

不幸的是,我在精美的 Rcpp 库示例中没有找到解决方案。

Windows平台是:

在以下条件下运行:

除了 g++(5.3 版)之外,linux 平台类似。

下面是用于复制的简化代码块。

此代码在使用 -DNO_REG 构建时运行正常。否则调用test::my_test(1, "1000")返回:

编辑:
1. 问题集中在 std::regex 上。Boost 问题只是偶然的评论。
2.问题只在打包后出现,不使用Rcpp::source("cppfile")
3.打包代码:
R控制台:

CMD控制台:

附加编辑:
一旦在 C++ 代码中声明了正则表达式,就会出现 .Call 问题。使用或不使用(如在 std::regex_match 中)不会改变。

0 投票
1 回答
16204 浏览

r - loadNamespace(i, c(lib.loc, .libPaths()), versionCheck = vI[[i]]) 中的错误:没有名为“Rcpp”的包

基本上我想使用 wordcloud 功能。我正在通过 R 控制台工作。但如果那是问题,我可以使用 Rstudio。

当我使用

我也试过

然后:

当我检查路径时,C:\Users\Abbas\Documents\R\win-library\3.2\file2388511e56ac\Rcpp我只能找到空文件夹。我仍然将此文件夹移至C:\Users\Abbas\Documents\R\win-library\3.2\Rcpp. 即使在此之后,当我尝试加载 Rcpp 包时,我也会收到错误消息。

同样在检查路径时C:\Users\Abbas\AppData\Local\Temp\RtmpwrnScP\downloaded_packages,我可以在那里看到 zip 文件 Rcpp_0.12.3。

帮助!

编辑:当我通过 Rstudio 尝试这个时,我在这里错过了什么?

0 投票
1 回答
89 浏览

r - 在 Rcpp 中调用 `[data.frame` 子集 data.frame 时避免使用 SIGSEGV

由于我不明白的原因,我的 Rcpp 代码偶尔会失败(SEGFAULT 等)。该代码创建了一个大型 data.frame,然后尝试通过调用 R 子集函数[.data.frame) 从创建该框架的同一方法中获取此 data.frame 的一个子集。它的一个非常简化的版本如下所示:

但是,虽然这偶尔会起作用,但有时它会失败并出现以下错误:

有谁知道出了什么问题?

注意:这不是重复的. 我已经看到其他堆栈溢出答案,它们通过利用每个向量上的子集来创建向量,例如

但是,我明确希望避免重复[idx]子集,因为在构建 data.frame 时不知道 idx(它只在最后才知道),我希望找到一种不涉及重复调用的方法那。如果可以在最后一次转换 data.frame,那会很好。

0 投票
2 回答
809 浏览

c++ - 在rcpp中将列表转换为矩阵

我想转换一个列表,例如:

到 Rcpp 中的矩阵 (2,5)。最快的方法是什么?

在这种情况下,函数 wrap() 不起作用。

首先,我尝试将列表转换为向量,然后再转换为矩阵。在函数中使用 wrap():

我收到一个错误:

0 投票
1 回答
924 浏览

rcpp - 构建使用 RcppArmadillo、RcppEigen 并依赖于 Cpp11 插件的 R 包

我遵循了迄今为止在本网站或 Dirk、Hadley 或其他人发表的笔记中解释的所有程序。但是,由于 cpp11 插件的问题,我在构建包时仍然遇到问题。

我用RcppArmadillo.package.skeleton()函数。我将我的 cpp 文件放在 src 目录中。NAMESPACE 文件看起来应该包含importFrom(Rcpp, sourceCpp)行。我还编辑了DESCRIPTION文件,在LinkingTo部分,我添加了RcppEigen和我使用的其他包。我终于compileAttributes(verbose=TRUE)在 R 中运行了这个函数,一切看起来都很好。因此,我认为我已经做了我应该做的一切。我还必须提到,当我在 R 中使用 编译我的代码时sourceCpp(),它可以完美运行并且编译时没有错误!为了更好地说明我的依赖关系,我将代码的第一块放在这里:

问题是当我构建我的包时,我收到与autocpp11 插件相关的类型的行的错误和警告。

在这个网站上搜索了类似的帖子后,我得出结论,我必须强制我的 R 编译器使用 c++11,因此我编辑了我的Makvars文件~/.R/Makevars,因为我使用的是 MAC,所以我 CXX=clang++ -std=c++11在该文件中添加了这一行:但是,当我这样做时,这 3 个错误消失了,但生成了 50 个新错误,因为不再识别所有 Armadillo 变量类型,例如 mat、uvec 等。所以我不知道如何解决这个问题。

我认为基本上put// [[Rcpp::plugins(cpp11)]]应该处理它,因为新版本的Rcpp支持这个插件,可能这就是为什么当我sourceCpp在RI中运行时没有错误并且一切看起来都很好。但我不知道在构建我的包时会发生什么。我的 Rcpp 版本是 0.12.8 。预先感谢您提供任何形式的帮助。

0 投票
1 回答
446 浏览

r - Rcpp::DataFrame::create 受限于 20 个参数?

我们在 Rcpp 函数中创建以下数据框:

此数据框旨在作为返回的结果。但是由于以下错误,它无法编译:

它适用于 20 个参数。我们如何克服这个问题?谢谢

0 投票
0 回答
78 浏览

r - 我的 Rcpp 代码延迟显示打印的消息

我有一个 Rcpp 代码,其中有一条消息要打印为:

每100次迭代后“迭代次数为---”。为此,我使用了代码:

此代码的问题在于它延迟显示消息并在程序结束后显示所有消息。我该如何解决这个问题?

0 投票
1 回答
1425 浏览

rcpp - 在 Rcpp 中声明一个变量作为引用

在 C++ 中,我们可以将变量声明为引用。

如果我们设置b=15,a也会改变。

我想在 Rcpp 中做类似的事情。

X我想通过将值插入到它的一个向量中来更新 R 中的一个对象。上面的代码不起作用,所以我尝试了这个:

并收到错误。

0 投票
1 回答
347 浏览

r - 从 Rcpp 中调用 igraph

作为在进一步处理之前利用随机抽取的网络数据的一部分,我试图igraph在每次迭代开始时从包中调用几个函数。我使用的代码如下:

因此,虽然 C++ 编译时没有警告,但会引发以下错误:

从错误看来,我正在将 S4 类传递给双精度类?错误在哪里?

0 投票
1 回答
229 浏览

date - 在 Rcpp 中查找两个给定日期之间的天数

我是 Rcpp 的新手,但我有一个与日期和日期时间相关的任务。让我在我的 Rcpp 函数中的 DataFrame 中有市场数据。因此,日期字段的格式如下:

2016-04-19 00:01:00

包含日期值的数据框字段名称是“日期”。所以,我得到 2 个向量:

问题:

1)我不能区分 Date 的 2 个 Date 值(我不知道为什么,但是 gcc-4.9.3 给了我这样的差异错误:

错误:'operator-' 的重载不明确(操作数类型为 'Rcpp::traits::storage_type<14>::type {aka double}' 和 'Rcpp::Date') auto tmp = tmpDate[j+1] - tmpTradeDay;

但如果我使用这样的代码:

它运作良好。

2)如何格式化DateDatetime对象的输出?to_string不会很好地格式化它 - 我给出这样的结果:1461176460.000000

3) 我希望语法 likeDate(datetime[i])会给我一个Date对象。但它不会。我知道这pureDate[1] - pureDate[0]应该具有相同的Y-M-D值,但它们在系列滞后(60 秒)方面有所不同。

谢谢。谁能帮我解决这些问题?