有什么方法可以使用sourceCpp()制作Infix函数

JPM

我想知道是否有可能制作一个infix函数,例如A %o% B使用Rcpp。

我知道使用该inline是可行的,但是在使用时仍无法找到一种方法来执行此操作sourceCpp()

当参数肯定是使用和的向量时,我已经完成了%o%/的以下infix实现outer()RcppEigeninline

`%op%` <- cxxfunction(signature(v1="NumericVector",
                                v2="NumericVector"),
                      plugin = "RcppEigen",
                      body = c("
                  NumericVector xx(v1);
                  NumericVector yy(v2);

                  const Eigen::Map<Eigen::VectorXd> x(as<Eigen::Map<Eigen::VectorXd> >(xx));
                  const Eigen::Map<Eigen::VectorXd> y(as<Eigen::Map<Eigen::VectorXd> >(yy));

                  Eigen::MatrixXd op = x * y.transpose();
                  return Rcpp::wrap(op);
                           "))

可以很容易地使用导入它sourceCpp(),但是不能将其作为infix函数。

我目前的尝试如下:

#include <Rcpp.h>
using namespace Rcpp;
#include <RcppEigen.h>

// [[Rcpp::depends(RcppEigen)]]



// [[Rcpp::export]]
NumericMatrix outerProd(NumericVector v1, NumericVector v2) {
  NumericVector xx(v1);
  NumericVector yy(v2);

  const Eigen::Map<Eigen::VectorXd> x(as<Eigen::Map<Eigen::VectorXd> >(xx));
  const Eigen::Map<Eigen::VectorXd> y(as<Eigen::Map<Eigen::VectorXd> >(yy));

  Eigen::MatrixXd op = x * y.transpose();
  return Rcpp::wrap(op);
}

因此,总结一下我的问题。是否可以通过提供infix函数sourceCpp

德迈尔

是否可以通过提供infix函数sourceCpp

是的

一如往常,应该阅读Rcpp小插图特别是在这里,如果您查看Rcpp属性小插图的第1.6节,您会发现可以使用的name参数来修改函数的名称Rcpp::export例如,我们可以这样做:

#include <Rcpp.h>

// [[Rcpp::export(name = `%+%`)]]
Rcpp::NumericVector add(Rcpp::NumericVector x, Rcpp::NumericVector y) {
  return x + y;
}

/*** R
1:3 %+% 4:6
*/

然后我们得到:

Rcpp::sourceCpp("~/infix-test.cpp")

> 1:3 %+% 4:6
[1] 5 7 9

因此,您仍然必须在代码中命名有效的C ++名称的C ++函数,但是您可以通过name参数将其导出到R,Rcpp::export而无需在R端做任何进一步的事情。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

有什么方法可以使用Numpy数组制作软引用或类似指针的对象吗?

来自分类Dev

为什么我可以使用模板函数中的私有方法

来自分类Dev

有什么方法可以使用onload函数在图像上加载文本吗?

来自分类Dev

有什么方法可以使用Boost库来实现Excel LINEST函数?

来自分类Dev

有什么方法可以使用 #define 指令来定义 printf 函数吗?

来自分类Dev

有没有什么方法可以在Om中制作不使用匿名函数的onClick处理程序?

来自分类Dev

有什么方法可以使用query-importrange函数创建我的Google表格文档副本,而不会返回消息错误?

来自分类Dev

我可以使用什么软件制作Ubuntu的镜像?

来自分类Dev

我可以使用什么软件制作Ubuntu的镜像?

来自分类Dev

有没有一种方法可以使用SKSpriteNode和PhysicsBody参数使用Spritekit制作软体?

来自分类Dev

创建函数时,有什么方法可以使Postgres更严格?

来自分类Dev

有什么方法可以使Python函数的功能更具可读性吗?

来自分类Dev

有什么方法可以使用中止符号调用scala方法(具有type参数)

来自分类Dev

有没有一种方法可以使用matplotlib制作“ 3D云图”?

来自分类Dev

为什么可以使用此“私有”值构造函数?

来自分类Dev

有没有一种方法可以使jQuery的.on()函数与promises配合使用?

来自分类Dev

有什么方法可以在普通函数中使用 await 吗?

来自分类Dev

没有任何房间列表,有什么方法可以使用房间查找器?

来自分类Dev

是否有可以使用的“ GenerateJwt”方法?

来自分类Dev

有什么方法可以使用自定义选择器(查找方法)选择用户?

来自分类Dev

有什么方法可以使用import someValue._在Scala中实现重写方法?

来自分类Dev

有什么方法可以使用Mockito模拟静态方法吗?

来自分类Dev

有什么方法可以使接口中的方法使用 DAO 模式返回通用 List<> 吗?

来自分类Dev

有什么方法可以使用模板组件/页面使用Gatsby创建动态子弹吗?

来自分类Dev

有什么方法可以使用 Selenium C# 为 Safari 使用旧协议

来自分类Dev

为什么Len函数可以使用索引?

来自分类Dev

有什么方法可以使用MSVS2015模拟编译时双常量?

来自分类Dev

有什么方法可以使用PhantomJSDriver在PhantomJS中设置用户代理?

来自分类Dev

有什么方法可以使用mongoose从mongodb的批量操作中获取修改的IDS?

Related 相关文章

  1. 1

    有什么方法可以使用Numpy数组制作软引用或类似指针的对象吗?

  2. 2

    为什么我可以使用模板函数中的私有方法

  3. 3

    有什么方法可以使用onload函数在图像上加载文本吗?

  4. 4

    有什么方法可以使用Boost库来实现Excel LINEST函数?

  5. 5

    有什么方法可以使用 #define 指令来定义 printf 函数吗?

  6. 6

    有没有什么方法可以在Om中制作不使用匿名函数的onClick处理程序?

  7. 7

    有什么方法可以使用query-importrange函数创建我的Google表格文档副本,而不会返回消息错误?

  8. 8

    我可以使用什么软件制作Ubuntu的镜像?

  9. 9

    我可以使用什么软件制作Ubuntu的镜像?

  10. 10

    有没有一种方法可以使用SKSpriteNode和PhysicsBody参数使用Spritekit制作软体?

  11. 11

    创建函数时,有什么方法可以使Postgres更严格?

  12. 12

    有什么方法可以使Python函数的功能更具可读性吗?

  13. 13

    有什么方法可以使用中止符号调用scala方法(具有type参数)

  14. 14

    有没有一种方法可以使用matplotlib制作“ 3D云图”?

  15. 15

    为什么可以使用此“私有”值构造函数?

  16. 16

    有没有一种方法可以使jQuery的.on()函数与promises配合使用?

  17. 17

    有什么方法可以在普通函数中使用 await 吗?

  18. 18

    没有任何房间列表,有什么方法可以使用房间查找器?

  19. 19

    是否有可以使用的“ GenerateJwt”方法?

  20. 20

    有什么方法可以使用自定义选择器(查找方法)选择用户?

  21. 21

    有什么方法可以使用import someValue._在Scala中实现重写方法?

  22. 22

    有什么方法可以使用Mockito模拟静态方法吗?

  23. 23

    有什么方法可以使接口中的方法使用 DAO 模式返回通用 List<> 吗?

  24. 24

    有什么方法可以使用模板组件/页面使用Gatsby创建动态子弹吗?

  25. 25

    有什么方法可以使用 Selenium C# 为 Safari 使用旧协议

  26. 26

    为什么Len函数可以使用索引?

  27. 27

    有什么方法可以使用MSVS2015模拟编译时双常量?

  28. 28

    有什么方法可以使用PhantomJSDriver在PhantomJS中设置用户代理?

  29. 29

    有什么方法可以使用mongoose从mongodb的批量操作中获取修改的IDS?

热门标签

归档