问题标签 [rcpp]
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.
xcode - 内联和 Xcode 4.2.1 出错
我正在尝试让内联包在我的 macbook 上运行。以下代码块(来自 cxxfunction 示例)失败:
出现此错误:
这很奇怪,因为 g++ 可用:
我在 Mac OS 10.7.2 上运行 Xcode 4.2.1、R 2.14.0。
r - 使用 SHLIB 编译和加载独立的 Rcpp 函数
我正在尝试使用SHLIB
(另存为foo.cpp
)编译以下函数:
我试试
如何包含此文件,这是使用 Rcpp 编译独立函数的正确方法吗?当然,我已经安装了 Rcpp 和install.packages('Rcpp')
.
更新: 试图在 RI 中找到 Rcpp.h 的位置得到:
然而,
更新 2:
看着http://www.mail-archive.com/r-help@r-project.org/msg79185.html,我试过了
它生成了foo.o
和foo.so
。我现在如何在 R 中导入它?
更新 3:
所以它可以从dyn.load
as
它可以成功调用为
尽管该功能是不可见的。
c++ - 将 Rcpp::CharacterVector 转换为 std::string
我正在尝试在Rcpp函数中打开文件,因此我需要将文件名作为 char* 或 std::string。
到目前为止,我已经尝试了以下方法:
但显然,由于我收到编译时错误,as
它不起作用。Rcpp::CharacterVector
有没有一种简单的方法可以从参数中获取字符串或以某种方式从 Rcpp 函数参数中打开文件?
c++ - 在 Rcpp 中引发异常
我正在尝试从我的 rcpp 代码报告错误。我正在使用exception (const char *message_, const char *file, int line)
来自http://dirk.eddelbuettel.com/code/rcpp/html/classRcpp_1_1exception.html的构造函数。为了隔离问题,我写了以下内容bar.cpp
:
当我在 R 中运行它时,这就是我得到的:
r - 用长度相等或更大的字符串有效地替换固定位置的子字符串
用另一个相等或更大长度的字符串替换固定位置子字符串的有效方法是什么?
例如,下面通过首先找到“abc”的位置然后替换它来替换子字符串“abc”:
但是,我们知道子字符串“abc”总是在字符位置 2、3 和 4。在这种情况下,有没有办法指定这些位置,以便不需要执行字符串匹配并且使用字符索引反而?
我确实尝试使用 substr() 但是当替换字符串大于被替换的子字符串时,它并没有像我希望的那样工作:
非常感谢您抽出宝贵的时间,
托尼·布雷亚尔
PS以上可能是做我想做的最有效的方法,但我想我会问,以防万一有更好的方法:)
===== 时间 =====
上面的时间是从下面的代码生成的:
c++ - stringstream 在 OSX 10.6 上无法与 Rcpp 一起使用
似乎 std::stringstream 不适用于 Rcpp。为了隔离这个问题,我写了一个最小的程序:
tsmall
应该只是将字符串转换为浮点数。Rf_PrintValue
用于调试。现在在 OSX 10.16.7 上的 R 中,我得到
在另一台机器(Ubuntu)上,它按预期工作:
我在 OSX 上尝试了一个小型普通 C++ 程序,当然使用 stringstream 转换字符串和浮点数效果很好。
OSX 上使用的编译器是 MacPorts g++-mp-4.4。
更新: 我发现早先在 _GLIBCXX_DEBUG enabled 时,Stringstream 上的 stringstream 和 OSX 不使用双打的问题。但是,当我使用 /usr/bin/g++-4.2 中的默认 gcc-4.2 编译该问题中的测试程序时,我得到了错误,但使用 /opt/local/bin/g++-mp-4.4 编译可以正常工作。
但是,我已将 Rcpp 代码编译为
其中使用了 gcc-4.4:
所以我不确定这是否是同一个问题。
更新 2: 在https://discussions.apple.com/thread/2166586?threadID=2166586&tstart=0的讨论之后,我在代码顶部添加了以下内容:
并根据@Kerrek 的建议进行初始化f
(尽管这不应该改变任何东西)float f=0;
。stof
Mac 上的输出还是一样的。
c++ - 在 Rcpp 中构建数据框
我想在Rcpp函数中构造一个数据框,但是当我得到它时,它看起来并不像一个数据框。我试过推动向量等,但它会导致同样的事情。考虑:
在 R 中:
r - 更改 R CMD INSTALL 中的 CXXFLAGS 以开发 R 包
我正在尝试调试我正在开发的包。我使用makefile来构建、检查和安装软件包。这些包是一个 Rcpp 包,因此其中已经有一个 makevars 和 makevars.win 文件。我正在寻找的是仅针对特定的制作规则更改 CXXFLAGS 。然后make debug
将运行R CMD INSTALL
但CXXFLAGS= -Wall -pedantic -g -O0"
常规make install
将在CXXFLAGS=-O3
没有任何调试信息的情况下运行。有没有一种无需修改我的包、个人或系统 makevars 文件即可动态更改它的好方法?
c++ - 返回 Rcpp 中 size_t 的换行
我是 Rcpp 的新手,所以仍然盲目地寻找我的方式。问题的长短是我有一个生成指针的对象,我希望该指针返回给 R。
我发现将指针转换为 a 可以size_t
保持必要的精度,但是,我似乎无法使用wrap
.
在下面的代码中,只返回unsigned long int
将编译,其他的会抛出错误,为了篇幅我不在这里包含。对于我的对象,转换为 anunsigned long int
会导致编译器由于精度丢失而失败(即在第一个块中全部被注释掉)。
使用 a应该足以满足我的需要,以避免为此类对象size_t
创建模板的替代方法。wrap