问题标签 [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 回答
80 浏览

c++ - 在 Rcpp 中创建对角矩阵但结果错误

该代码应该创建一个值为 1 的对角矩阵。

所以我x = filterOne(3)在 R 环境中调用,结果是:

似乎所有单元格的值都是 1。然后,只需键入x即可在 RGUI 中查看返回的矩阵值:

这怎么会来?

如果有人使用相同的代码但可以生成正确的结果,请告诉我。非常感谢。

0 投票
1 回答
54 浏览

rcpp - 在 Rcpp 如何通过 NumbericaVector 创建 NumericMatrix?

在 Rcpp 如何通过 NumbericaVector 创建 NumericMatrix?

就像是

谢谢。

0 投票
1 回答
88 浏览

r - Rcpp 警告:未找到为 R 构建 C++ 代码所需的工具

我刚刚使用了 Rcpp

并发生错误:几天前它工作正常,但今天突然失败。

R version的是4.0.2

可能是什么问题,我该怎么办?

0 投票
0 回答
15 浏览

r - 如何从 microsoft excel 日期格式 ddddd.ttttt 在 R 中获得最多毫秒的时间

我有一个应用程序(cpp 中的 dll),它返回一个值数组,如 42005.770833333336、42005.770833344912、42005.770833356481... 等等。在此,整数部分是从 1899 年 12 月 31 日开始的天数,小数部分是直到微秒的时间。它基本上是 microsoft dddd.ttttt 格式,我通过加载 dll 并调用适当的函数在我的 R 应用程序中将此数据作为数字向量发送。目前我正在循环矢量并使用 as.Date(42005, origin="1899-12-30") 我得到正确的日期,然后处理小数部分以获得直到微秒的时间。问题是我在我的 dll 中通过数组循环一次以进行某些操作;然后在 R 代码中再次将数组值转换为日期时间。

我想在 dll 本身的一个循环中执行此操作。试图将代码 .R 文件拉到具有一些 Rcpp 代码的 .cpp 中。我正在尝试使用 Rcpp::Date 但它的计算时间是从 1970 年 1 月 1 日开始的。是否有任何其他 R/Rcpp 类/函数可以根据需要获取基准日期?使用 R/Rcpp 还有其他方法吗?

我知道没有直接的方法。但我主要是在寻找可以帮助前进的方法。

0 投票
2 回答
40 浏览

rcpp - 注册 C++ 版本的 Rcpp 函数并在新包中的其他 Rcpp 函数中使用它

我有一个包hpa有一些用Rcpp编写的功能。我想在我的新R 包中使用其中一些功能。为了避免性能损失,必须以“Rcpp 形式”使用此功能,因此我无法以通常的方式导出它们。

我发现了一个类似的问题。按照 Dirk Eddelbuettel 的回答,我调查了这个文件并编写了以下代码(在已放置在src文件夹中的init.c文件中),希望使polynomialIndex函数(来自 hpa 包)变得可用(以 Rcpp 即 C++ 形式) 用于其他包的 Rcpp 功能(包括我的新包):

不幸的是,当我尝试构建hpa包时,会出现以下错误消息

这似乎与polynomialIndex.h文件包含 <RcppArmadillo.h> 的事实有关。该文件本身如下所示:

然后我尝试从init.c中删除polynomialIndex.h并直接在init.c文件中声明polynomialIndex 。不幸的是,它会导致另一个错误消息

请帮我解决这些问题。最后,我希望能够在我的新包中使用 polynomialIndex 函数。根据我发现的信息,它应该看起来像这样(简化示例):

PS这个问题也和这个类似,但不能解决我的问题。

0 投票
1 回答
62 浏览

r - 尝试在 NumericMatrix 中移动数字

我在 Rcpp 中创建了一个双 for 循环,以便在下一个可用单元格中有 5 的列中向上移动一个单元格,所有 1 都为 1。当我编译代码时,我没有收到任何错误,但代码确实在矩阵中移动了 1,它只返回相同的矩阵。让我们取一个原始矩阵,比如命名为 t:

运行代码 up_rcpp(t,5,5) 后,我应该得到以下结果

下面是我的rcpp代码:

0 投票
0 回答
35 浏览

r - 根据在 R 中的另一列上执行的滚动计算将多列添加到数据框中

想知道是否有人可以提出更简洁的替代方案来实现与以下相同的结果?

我有一个包含三列datetime和的数据框rain。它是每小时降雨记录的数据集。我想创建 96 个新列。每个新列都应返回值,这些值是对 col 执行的滚动总和计算的结果rain

新列和所需的滚动总和遵循以下模式:

  • rain2= 将 colrain中的当前值与其前面的值相加
  • rain3= 将 col 中的当前值与 colrain之前的两个值相加rain
  • .... 等等...
  • rain96= 将 col 中的当前值rain与其前面的 95 个值相加

我已经使用mutateand达到了预期的结果RcppRoll::roll_sum。但是这种方法需要复制和粘贴 96 行代码。

这是创建示例数据集的代码:

这是示例数据集:

这是所需的结果(注意为简单起见,我从下面的输出中删除了 cols rain4-rain9):

这是我当前的解决方案,但在应用于我的完整数据集时需要复制和粘贴 96 行代码:

谢谢!