Rcpp cannot convert ‘SEXP‘ {aka ‘SEXPREC*‘} to ‘###‘ in return

news2024/9/27 17:31:30

Rcpp cannot convert 'SEXP' {aka 'SEXPREC*'} to '***' in return

  • 引言
  • 代码说明
    • 报错代码
    • 两种修改方法
      • 代码1
      • 代码2

引言

Rcpp在使用的过程中可以访问R本地的一些函数,可以帮助我们更高效的进行计算.

        Rcpp::Environment global = Rcpp::Environment::global_env(); 

可以在Rcpp中访问R的全局环境.

 Rcpp::Function as = global["f"];

可以将R全局环境中的函数f转为Rcpp中as函数.

下面是上述过程中的一个示例:

> f = function(x,p) return(x[1:p])
> code = '#include<Rcpp.h>
+         using namespace Rcpp;
+         //[[Rcpp::export]]
+ 
+       NumericVector f1(NumericVector x, int p){
+     Rcpp::Environment global = Rcpp::Environment::Environment::global_env();
+     Rcpp::Function as = global["f"];
+     return as(x,p);}'
> 
> Rcpp::sourceCpp(code = code)
> f1(1:10,3) # Rcpp定义的函数f1成功编译
[1] 1 2 3

所以在接下来的尝试中遇到了bug. 以下是报错的代码.


> Rcpp::sourceCpp(code = code)
"E:/rtools40.1/mingw64/bin/"g++ -std=gnu++11  -I"E:/R-4.1.2/include" -DNDEBUG   -I"E:/R-4.1.2/library/Rcpp/include" -I"C:/Users/jls/AppData/Local/Temp/RtmpURw0pW/sourceCpp-x86_64-w64-mingw32-1.0.7"        -O2 -Wall  -mfpmath=sse -msse2 -mstackrealign  -c file1b805b366359.cpp -o file1b805b366359.o
file1b805b366359.cpp: In function 'double F(Rcpp::NumericVector, int)':
file1b805b366359.cpp:7:25: error: cannot convert 'SEXP' {aka 'SEXPREC*'} to 'double' in return
          return as(x1,h1);}
                         ^
make: *** [E:/R-4.1.2/etc/x64/Makeconf:245锛歠ile1b805b366359.o] 閿欒 1
Error in Rcpp::sourceCpp(code = code) : 
  Error 1 occurred building shared library.

经过自己的多次试错,上述bug原因被找到.

SEXPR语言中的S表达式,Rcpp返回的数据类型即为SEXP,自然而然地如果将bug中的返回类型改为SEXP即可正常编译;当然如果为了方便后续的计算强行转为自己所要的数据类型需要使用as函数.

如果大家不明白上述的意思,请看下面的代码说明.

代码说明

报错代码

在这里插入图片描述
在这里插入图片描述

以下gam实现的是上述图片的过程.

 code = '#include<Rcpp.h>
+         using namespace Rcpp;
+         //[[Rcpp::export]]
+        double F(NumericVector x1, int h1){
+          Rcpp::Environment global = Rcpp::Environment::global_env();
+          Rcpp::Function as = global["gam"];
+          return as(x1,h1);}'
> Rcpp::sourceCpp(code = code)  #  报错代码

两种修改方法

代码1

> code = '#include<Rcpp.h>
+         using namespace Rcpp;
+         //[[Rcpp::export]]
+        SEXP F(NumericVector x1, int h1){
+          Rcpp::Environment global = Rcpp::Environment::global_env();
+          Rcpp::Function as = global["gam"];
+          return as(x1,h1);}'
> 
> Rcpp::sourceCpp(code = code)  ## 成功编译

代码2

code = '#include<Rcpp.h>
        using namespace Rcpp;
        //[[Rcpp::export]]
       double F(NumericVector x1, int h1){
         Rcpp::Environment global = Rcpp::Environment::global_env();
         Rcpp::Function as = global["gam"];
         return Rcpp::as<double>(as(x1,h1));}'

Rcpp::sourceCpp(code = code)

以上就是文章标题Rcpp cannot convert ‘SEXP’ {aka ‘SEXPREC*’} to ‘###’ in return出现bug的解决方法,建议大家理清RRcpp的逻辑,理解aswrap两个函数,本篇内容到此为止.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/399424.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【CSS】CSS 背景设置 ① ( 背景颜色 | 背景图片 | 背景平铺 )

文章目录一、背景颜色1、语法说明2、代码示例二、背景图片1、语法说明2、代码示例三、背景平铺一、背景颜色 1、语法说明 CSS 的背景颜色样式语法 : 默认的背景颜色是 transparent 透明 ; background-color:颜色值;background-color 属性 可以 定义 文本颜色 , 其颜色值有三种…

MySQL DDL表操作【入门到精通】

目录 一、查询创建 1、查询当前数据库所有表 2、查看指定表结构 3、查询指定表的建表语句 4、创建表结构 二、数据类型 1、数值类型 2、字符串类型 3、日期时间类型 三、表操作-案例 设计一张员工信息表&#xff0c;要求如下&#xff1a; 对应的建表语句如下&#…

解忧杂货铺(二):UML时序图

目录 1、概述 2、UML时序图 2.1、什么是时序图 2.2、时序图的元素 2.2.1 角色(Actor) 2.2.2 对象(Object) 2.2.3 生命线(LifeLine) 2.2.4 控制焦点(Activation) 2.2.5 消息(Message) 2.2.6 自关联消息 2.2.7 组合片段 1、概述 在看AUTOSAR规范的时候发现时序图里面的…

enscape和twinmotion哪个好用?

Twinmotion 和 Enscape这2款渲染软件最近受到了一些初学者的关注。这 2 个软件适用于那些需要 3D 渲染但质量不是他们项目的首要任务的人。在本文中&#xff0c;我们将对Twinmotion 和 Enscape 进行面对面的比较&#xff0c;并帮助您确定哪一个更适合您。什么是 Twinmotion&…

关于算法的一些简单了解

文章目录ALGORITHMBASIC INFORMATIONBasic algorithm design technology穷举法分治法减治法动态规划法贪心法Algorithm design technology based on search回溯法分支限界法PRACTICECONCEPTCALATION*CODEprim&dijkstra&kruskal分治法Q&AT(n)T(n)T(n) 是渐进时间复杂…

Go Signal信号

目录信号信号的种类分类信号种类Go Signalhandlershandler信号的存储信号持有状态的获取信号持有状态的清空NotifyStopIgnore & ResetNotifyContext如何优雅的关闭web app优雅地重启信号 信号(Signal)是Linux, 类Unix和其它POSIX兼容的操作系统中用来进程间通讯的一种方式…

hibernate学习(二)

hibernate学习&#xff08;二&#xff09; 一、hibernate常见配置&#xff1a; 1.XML提示问题配置&#xff1a; 二、hibernate映射的配置&#xff1a; &#xff08;1&#xff09;class标签的配置&#xff1a; 标签用来建立类与表之间的映射关系属性&#xff1a; 1.name&…

Clickhouse中bitmap介绍以及计算留存Demo

前言 参考了腾迅的大数据分析-计算留存,能够根据用户自定义属性,以及玩家行为进行留存的计算。最初计算留存的方法使用的是clickhosue自带的rentention函数,使用这个函数不用关注太多细节,只需要把留存条件放入函数即可。但是这个如果需要关联用户属性,就比较麻烦了。因此…

如何应对危害机房安全的这几个常见要素?

随着现代化进程的推进&#xff0c;各行业对计算机的依赖性日益增高&#xff0c;计算机系统已经成为业务系统的重要组成部分。 在这种情况下&#xff0c;一旦机房设备出现故障&#xff0c;就会影响机房的正常运行&#xff0c;造成严重后果。尤其是银行、证券、海关等需要实时数据…

前端学习第三阶段-第1、2章 JavaScript 基础语法

01第一章 JavaScript网页编程课前导学 1-1 JavaScript网页编程课前导学 02第二章 JavaScript 基础语法 2-1 计算机基础和Javascript介绍 01-计算机基础导读 02-编程语言 03-计算机基础 04-JavaScript初识导读 05-初始JavaScript 06-浏览器执行JS过程 07-JS三部分组成 08-JS三种…

【微信小程序】-- 页面处理总结(三十一)

&#x1f48c; 所属专栏&#xff1a;【微信小程序开发教程】 &#x1f600; 作  者&#xff1a;我是夜阑的狗&#x1f436; &#x1f680; 个人简介&#xff1a;一个正在努力学技术的CV工程师&#xff0c;专注基础和实战分享 &#xff0c;欢迎咨询&#xff01; &…

SSL/TLS协议工作原理

SSL/TLS协议工作原理 SLL/TLS协议工作在应用层和传输层之间&#xff0c;应用层数据需要经过SSL/TLS层的加密之后才会发送到传输层。SSL/TLS协议有两个重要协议&#xff1a;握手协议、记录协议。 1. 握手协议 TCP三次握手完成后&#xff0c;才能进行SSL/TLS的握手。 因为&#…

SNAP中根据入射角和干涉图使用波段计算器计算垂直形变--以门源地震为例

SNAP中根据入射角和相干图使用波段计算器计算垂直形变--以门源地震为例0 写在前面1 具体步骤1.1 准备数据1.2 在SNAP中打开波段运算Band Maths1.3 之前计算的水平位移displacement如下图数据的其他处理请参考博文在SNAP中用sentinel-1数据做InSAR测量&#xff0c;以门源地震为例…

【JavaEE初阶】第四节.文件操作 和 IO (下篇)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言三、文件内容的操作 3.1 读文件 3.1.1 使用字节流读文件 3.2 写文件 3.2.1 使用字节流写文件 …

信捷 XDH Ethercat A_VELMOVE

本文描述信捷 EthercatA_VELMOVE指令&#xff0c;以设定的速度持续运行 上图中&#xff0c;在M100的上升沿&#xff0c;执行A_VELMOVE指令。A_VELMOVE HD100 D100 M101 K0HD100输入参数起始地址 &#xff0c;HD118输入参数末尾地址HD100~HD103,双精度浮点数&#xff08;64位&am…

【剧前爆米花--爪哇岛寻宝】Java实现无头单向非循环链表和无头双向链表与相关题目

作者&#xff1a;困了电视剧 专栏&#xff1a;《数据结构--Java》 文章分布&#xff1a;这是关于数据结构链表的文章&#xff0c;包含了自己的无头单向非循环链表和无头双向链表实现简单实现&#xff0c;和相关题目&#xff0c;想对你有所帮助。 目录 无头单向非循环链表实现 …

Web Components学习(1)

一、什么是web components 开发项目的时候为什么不手写原生 JS&#xff0c;而是要用现如今非常流行的前端框架&#xff0c;原因有很多&#xff0c;例如&#xff1a; 良好的生态数据驱动试图模块化组件化等 Web Components 就是为了解决“组件化”而诞生的&#xff0c;它是浏…

4.Elasticsearch深入了解

4.Elasticsearch深入了解[toc]1.Elasticsearch架构原理Elasticsearch的节点类型在Elasticsearch主要分成两类节点&#xff0c;一类是Master&#xff0c;一类是DataNode。Master节点在Elasticsearch启动时&#xff0c;会选举出来一个Master节点。当某个节点启动后&#xff0c;然…

A Star算法最通俗易懂的一个版本

01-概述虽然掌握了 A* 算法的人认为它容易&#xff0c;但是对于初学者来说&#xff0c; A* 算法还是很复杂的。02-搜索区域(The Search Area)我们假设某人要从 A 点移动到 B 点&#xff0c;但是这两点之间被一堵墙隔开。如图 1 &#xff0c;绿色是 A &#xff0c;红色是 B &…

猿创征文 | re:Invent 朝圣之路:“云“行业风向标

&#x1f497;wei_shuo的个人主页 &#x1f4ab;wei_shuo的学习社区 &#x1f310;Hello World &#xff01; AWS 亚马逊云科技re:Invent全球大会 2022年亚马逊云科技re:Invent全球大会震撼来袭&#xff0c;即将于北京时间11月30日-12月2日在美国内华达州&#xff0c;拉斯维加斯…