在 C++ 中使用冒号(':')访问数组中的元素(在 Rcpp 中)

2024-03-27

我正在尝试运行以下代码。坦率地说,我对 C++ 知之甚少,但我想让以下函数运行。你能帮我运行这个愚蠢的例子吗?

cppFunction(
  'NumericVector abc(int x, int x_end, NumericVector y)
  {
    NumericVector z;
    int x1 = x + x_end;
    z = y[x:x1];
    return(z);  
   }'
)

abc(3,c(0,1,10,100,1000,10000))

我看到这个...

错误:“:”标记之前应有“]”

Update抱歉,我忘了提到我需要从中生成一系列数字x to x1。功能IntegerVector::create仅创建一个变量x and x1 not x though x1。我举的例子很简单。我现在更新了这个例子。我需要做C++ what seq()确实在R

基于以下答案的解决方案(@SleuthEye)

Rcpp::cppFunction(
  'NumericVector abc(int x, int x_end, NumericVector y)
  {
  NumericVector z;
  Range idx(x,x_end);
  z = y[idx];
  return(z);  
  }'
)

abc(3,5,c(0,1,10,100,1000,10000))
[1]   100  1000 10000

代码参数Rcpp's cppFunction必须包含有效的 C++ 代码。该库试图尽可能无缝,但仍然受限于 C++ 语法。更具体地说,C++ 没有范围运算符 (:),相应地,C++ 编译器告诉您索引表达式必须是有效索引(包含在[],没有:)。索引的类型可以是int or IntegerVector,但它不能包含:特点。

正如建议的那样Rcpp 子集化文章 http://gallery.rcpp.org/articles/subsetting/,但是您可以创建一个代表所需的向量(x,x+1)然后您可以使用该范围来建立索引NumericVector变量如下:

IntegerVector idx = IntegerVector::create(x, x+1);
z = y[idx];

更一般地,您可以使用Range http://dirk.eddelbuettel.com/code/rcpp/html/classRcpp_1_1Range.html以类似的方式:

Range idx(x, x1);
z = y[idx];
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 C++ 中使用冒号(':')访问数组中的元素(在 Rcpp 中) 的相关文章

随机推荐

  • 如何将外部JS脚本添加到VueJS组件中?

    我必须为支付网关使用两个外部脚本 现在两者都被放入index html file 但是 我不想在开始时加载这些文件 仅当用户打开特定组件时才需要支付网关 using router view 有办法实现这个目标吗 Thanks 解决这个问题的
  • 如何手动填充 ViewModel(不使用 AutoMapper!)

    我知道有很多关于这个主题的帖子 但我找不到一个可以帮助我做我想做的事情 我知道我最终会使用 Automapper 但在开始使用它之前 我想学习如何手动执行操作 我想创建一个 ViewModel 通过存储库用我的实体中的值填充它并将其发送到我
  • 从 Mathematica 中的 Web 设置用户代理导入

    当我使用 Mathematica 连接到我的网站时 Import mysite Data 并查看我的 Apache 日志 我看到 99 XXX XXX XXX 22 May 2011 19 36 28 0200 GET HTTP 1 1 2
  • 我可以向 JLabel 添加操作侦听器吗?

    我想用 JLabel 替换 JButton 并且希望我的代码在单击 JLabel 时执行某些操作 当我拥有 JButton 时 我使用操作侦听器来处理按钮上的点击 myButton addActionListener new clicksL
  • 如何在Robot Framework中将图像添加到html日志中?

    如何将图像添加到机器人框架的html日志中 我想在 Robot Framework 的 html 日志中添加一些图片 有人可以对此有一些想法吗 Keyword Log来自内置库有html参数可能可以满足您的需要 参见文档 http robo
  • DDD:通过身份引用聚合根内的实体

    我一直在寻找正确的参考方式entities位于一个聚合根 当我们只得到他们的身份来自 URL 参数 我问了一个上一个问题 https stackoverflow com questions 7196820 update an entity
  • C++ 方法调用中前导“::”的目的是什么[重复]

    这个问题在这里已经有答案了 我一直在使用 Boost 库 在 Boost Exception 中 我注意到如下代码 define BOOST THROW EXCEPTION x boost throw exception x 只是出于好奇
  • 避免控制台消息形式封装函数

    我正在使用一个包函数 coreenv 来自 seewave 它在控制台中创建一条 请稍候 消息 正如我反复所说的那样 该消息非常烦人 所以 我需要一种方法 从我的代码中 暂时禁止控制台消息 OR 访问功能代码并取消消息行 以下不是我的真实代
  • 为什么 JSON 比 XML 更轻量?

    我发现 JSON 和 XML 之间的区别 因为 两者都是为了系统之间的数据交换 但是JSON和XML之间有一个很大的区别 即JSON比XML更轻量级 但我无法找到 JSON 轻量级的真正原因 是什么让 JSON 变得轻量级 我发现的一个答案
  • 在 Mac OS X 上使用 pip 安装 pycrypto 时出现 Broken Pipe 错误

    我正在尝试通过 pip 在 OS X 上安装 pycrypto 版本 2 3 当编译器尝试编译 MD2 c 时 我收到 Broken pipeline 错误 使用 easy install 时我遇到了非常类似的错误 这是我收到的错误 bas
  • 在 Three.js 中针对“子场景”进行光线投射

    因此 我正在使用 Three js 示例中的 webgl interactive cubes html 并且我有一个相对简单的问题 是否可以测试光线与对象的子对象的相交 例如 如果我做类似的事情 for var i 0 i lt 2000
  • IPython 的历史向后搜索未按预期工作

    IPython 的history search backward功能是我最喜欢的功能之一 history search backward允许您键入命令的一部分 然后在阅读行历史记录中向后搜索以该命令的该部分开头的命令 默认情况下 我相信 这
  • Kafka分区中消息分布不均匀

    我有一个主题 有 10 个分区 1 个消费者组 有 4 个消费者 工作线程大小为 3 我可以看到分区中的消息分布不均匀 一个分区有太多数据 而另一个分区是空闲的 如何让我的生产者将负载均匀分配到所有分区 以便所有分区都得到正确利用 根据De
  • VBscript 正则表达式替换

    我不知道为什么这仅适用于找到的最后一个实例 而不是我所期望的所有实例 任何帮助表示赞赏 输入字符串 a href http www scirra com target blank http www scirra com a br br a
  • Windows 应用程序认证失败通用 Windows 应用程序 10

    我使用 Html CSS 和 JS 开发了一个 Windows 10 通用应用程序 为了允许内联脚本 我使用 ms appx web 上下文 并将 ms appx web login html 设置为清单中的起始页 我已在清单文件中添加了
  • 从 firebase 函数连接到 MongoDB Atlas

    我正在尝试从 firebase 函数连接到 mongodb atlas 例如 export default async gt try const url mongodb srv foo email protected cdn cgi l e
  • 解组到相同的结构但不同的 json 名称

    我正在尝试解组特定的 json 数据 执行一些数据转换 然后编组数据并发送它 但是我想用不同的 json 变量名称来编组它 我可以将数据编组到另一个 json 名称 例如使用 xyz 而不是 abc abc 1 to xyz 1 packa
  • 日历控件 - 以编程方式突出显示日期

    我正在摆弄日历控件 但似乎无法完成对日期进行着色的简单任务 如果用户输入 7 个日期 我想在日历上对这些日期进行阴影处理 以便用户知道它们已被选择 本质上我想做 Calendar HighlightDate 5 1 11 gt 想象的哈哈我
  • CUDA - 为什么基于扭曲的并行减少速度较慢?

    我有关于基于扭曲的并行减少的想法 因为根据定义 扭曲的所有线程都是同步的 因此 我们的想法是输入数据可以减少 64 倍 每个线程减少两个元素 而无需任何同步 与 Mark Harris 的原始实现相同 减少应用于块级 数据位于共享内存上 h
  • 在 C++ 中使用冒号(':')访问数组中的元素(在 Rcpp 中)

    我正在尝试运行以下代码 坦率地说 我对 C 知之甚少 但我想让以下函数运行 你能帮我运行这个愚蠢的例子吗 cppFunction NumericVector abc int x int x end NumericVector y Numer