问题标签 [rinside]
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.
r - 从 R 调用 Rcpp 文件时加载错误,然后在其中回调
我写了一个调用R程序hello1()
,它是程序中包含的Rcpp函数demo2.cpp
我demo2.cpp
的是:
我尝试使用以下命令启动此脚本:
我收到以下错误:
dyn.load 中的错误(“/tmp/RtmpZl0JKp/sourceCpp-x86_64-pc-linux-gnu-0.12.10/sourcecpp_90cc33eafd15/sourceCpp_2.so”):无法加载共享对象'/tmp/RtmpZl0JKp/sourceCpp-x86_64-pc -linux-gnu-0.12.10/sourcecpp_90cc33eafd15/sourceCpp_2.so':/tmp/RtmpZl0JKp/sourceCpp-x86_64-pc-linux-gnu-0.12.10/sourcecpp_90cc33eafd15/sourceCpp_2.so:未定义符号:_ZN7RInsideD1Ev 调用:sourceCpp-> source -> withVisible -> eval -> eval -> dyn.load 执行停止
事实上,我想解决Rfor
循环的缓慢问题。我有一个R程序,它有一个大for
循环,执行速度非常慢。所以,我想将该for
循环从R更改为C++代码。在for
循环中,我调用了许多R函数。所以,我需要从C++代码调用R程序。因此,顺序是R到C++到R,即R到Rcpp到Rinside,我错了吗?
为什么?
rinside - 在 RInside.h 和 Rh 中都定义了 HAVE_UINTPTR_T
当我的 ubuntu 更新了一些 r-cran 软件包时,出现了“HAVE_UINTPTR_T redefined”的警告。这个警告重要吗?有人可以解释这个宏吗?我还在一些 python 标头中找到了它。
r - 创建嵌入式 R 实例时执行卡住
我正在使用 RInside 将 R 集成到 Qt 应用程序中。目前,我正在尝试运行 RInside 包中的 Qt 示例。我能够构建示例,但在创建嵌入式 R 实例时执行卡住了。
在创建嵌入式 R 实例时执行被卡住并且没有给出错误。
使用的工作环境
RInside 包:版本 0.2.14
Linux 版本:Red Hat Enterprise Linux Client 5.8 (Tikanga)
R:3.1.1
Rcpp 库:0.11.4
R内部库:0.2.14
Qt:4.7.4
任何帮助或建议将不胜感激。谢谢。
更新 :
现在,我正在 rinside_sample0.cpp 中尝试一个更简单的示例。
}
此代码在运行时也会卡住。它卡在RInside R(argc, argv);
现在,当我将 R_HOME 设置为我的 R 目录时,执行给了我这个错误:
编译日志:
c++ - RInside 和 Rcpp 的区别
我了解 RInside 允许 C++ 程序嵌入 R 代码,而 Rcpp 允许 R 代码调用 C++ 函数或库。
RInside 和 Rcpp 之间是否存在其他差异和共性?为什么 RInside 有一个名为 Rcpp 的命名空间?开发人员是否总是需要 RInside 和 Rcpp 才能将 R 代码作为 Cpp 中的类来调用?
c++ - c++ 中 Rcpp 与 bcc 编译器的集成
嗨,我正在寻找一个用 borland 编译器 bcc32 编译的 c++ 库。在我尝试利用 RInside 的好处之前,不幸的是它只能与 gcc-compiler 一起使用,并且不能在我的编程环境中使用,这就是 Embarcadero。
- 是否可以将 Rcpp 与 bcc32 编译器一起使用?
- 市场上是否有兼容的库在 C++ 中进行统计计算
我希望你能帮助我。谢谢。
c++ - RInside InternalFunction 上一个类,如何从 R 调用函数
我需要从 C++ 调用 R,并且我正在使用出色的 RInside / Rccp 包。我不是 R 专家,这可能会解释我的问题,如果太明显,我很抱歉。
我制作了一个对象和一个包装类,类似于 Rinside 示例/标准/rinside_interactive0.cpp。在此示例中,它显示了如何将方法附加到 R 属性类。
实际上我从来没有看到从 R 调用这个函数,R 语法是什么?我虽然以这种方式使用 R.parseEval :
但这不起作用并给出错误:
那么我的问题是如何在 R 中调用 Solver.names 函数(在 C++ 代码中处理)?请注意,分配/检索功能工作正常,可能是因为它们在某种程度上是“原始的”?
非常感谢弗兰克
omnet++ - 是否可以在 omnet++/Veins 项目中使用 RInside 来受益于丰富的 R 功能
我正在学习 R,并通过这个名为RInside的包来提供 c++ 类来调用嵌入式 R 解释器。我可以运行一些在按照这篇博文进行配置并在 Omnet++ eclipse IDE 中使用提供的 makefile 之后给出的示例。我们如何将它与 say Veins 集成(veins 在顶层目录和 src 目录中已经有自动生成的 makefile)?Rinside 需要 GCC 工具链,我认为这在 OMNeT++ 中是默认的。
根据我到目前为止所学到的,这些是选项:
- Omnet++ 用户手册说我们可以为某些源目录使用自定义生成文件。因此,将 RInside 代码保存在一个源文件夹和一个单独的 makefile 中,并从 Venes 顶级 makefile 调用此 makefile。我尝试了这两种方法:
- 从 RInside 示例和 makefile 复制一些源文件并更改 IDE 中的构建属性以从构建中排除此文件夹
- 还为此目录使用了选项自定义生成文件。但到目前为止还没有成功。可能是我做得不对。
- 使用 Rinside 实现所有功能并使其成为库(静态/共享)。在静脉中使用这个库。
到目前为止,有没有人尝试将它与基于 omnet++/veins 的项目一起使用?有谁知道是否值得尝试?欢迎任何其他建议。
我正在使用 Ubuntu 16.04 LTS 64 位。
c++ - 从使用另一个共享库的源文件构建和使用共享库。(R内)
我是构建 C++ 应用程序和 RInside(从 C++ 程序提供嵌入式 R 解释器访问的库)的初学者,需要一些帮助。我想将所有使用 RInside 的代码分隔在一个类/模块中,并仅向需要这些数据的其他程序提供一个函数(获取一些输入,使用 RInside 执行一些任务并返回输出)。我正在试验是否可以在另一个项目/模块中使用此功能(如果有人特别需要,Omnet++ 静脉),它有很多其他源文件和单独的 makefile。如果可能的话,我不想触及这些模块及其编译过程。所以我尝试了一个简单的例子,并对构建有疑问。我在 Test1 类中有 RInside 代码,并想在 Test2 类中使用它。据我了解,我使用 RInside 作为共享库。所以我需要使用 Test1 构建一个共享库,并在 Test2 中包含或引用它。
目录 Shared_1:Test1.h , Test1.cc : 类 Test1
目录 shared_2:Test2.h,Test2.cc:类 Test2
我已经像这样从 Test1.cc 创建了 libTest1_1.so。
我想在 Test2.cc 中使用来自 Test1.cc 的 test1Function1() ,如果可能的话,用 g++ 的不同选项编译 Test2.cc。当我使用所有库(用于构建 Test1.cc 和 libTest1_1.so 的库)编译 Test2.cc 时,它运行良好。
但是当我通过提供Test1.h和libTest1.so的包含目录来编译它时,它给了我错误。如果我理解正确,g++ 会在我构建 Test2 时尝试编译 Test1。所以它说它找不到 RInside.h,即使我没有将它直接包含在 Test2 中。
在 ./shared_2/Test2.h:11:0 包含的文件中,来自 ./shared_2/Test2.cc:8: ./shared_1/Test1.h:12:74: 致命错误:RInside.h: 没有这样的文件或目录#include
^ 编译终止。
我想了解的是:1)如何使用 RInside 将代码与另一个项目/模块分开。2)我在这里做错了什么。
我在谷歌驱动器中包含了一些文件。
我尝试在网上搜索但无法理解。我肯定想念一些东西。任何人都可以请帮忙。
c++ - C++ 调用 R 函数在单独的 .R 文件中定义
我希望我的 C++ 代码调用 R 函数,在两者之间传递数据。R 函数并非微不足道,目前在单独的 .R 文件中定义。
据我所知,Rinside 提供的示例将所有 R 代码“嵌入”在 C++ 代码中。
将我的 R 代码放入包中并在调用我的包的 C++ 代码中嵌入一个小的“存根”是唯一的解决方案吗?
c++ - 当我在 C++ 程序中包含 RInside 标头时,如何使链接器工作?
我正在尝试在 RInside 包的标准示例存储库中编译示例。我已经尝试运行已经在存储库中的 Makefile,但没有用。到目前为止,我遇到了几个错误,其中一些已经解决了。问题是,每次我解决一个错误时,都会发生两件事之一,它会出现一个新的错误或一个旧的错误再次出现。这是具有相应错误的不同生成文件的代码:
1) 没有 -L 的 Makefile
正如预期的那样,对这个文件应用 make 会返回关于未定义的 RInside::'s 引用的错误
2) 带有 -L 链接的 Makefile
错误是这样的:
原来libs库中的.so文件被命名为Rcpp.so,所以我把它重命名为libRcpp.so
,错误就消失了。
3)在重命名后Rcpp.so
,libRcpp.so
我将 make 应用到第 2 点的相同 makefile)并且错误再次与未定义的 RInside::: 引用有关
4)将make应用于文件夹中已经存在的makefile
错误(更改R_LIBS_USER
为
曾是:
到目前为止,我已经阅读了有关在 C++ 中包含标头的更多一般问题,以及一些专门关于 RInside 的问题,其中一些问题由编写包的 Dirk Eddelbuettel 回答,但所有答案都与使用-L<path>/include
我几乎可以肯定我使用正确的链接器。
这是我到目前为止读到的一些问题:
在 Linux 上使用 g++编译 RInside 程序 在 Linux 上使用 g++ 编译 RInside 程序
http://lists.r-forge.r-project.org/pipermail/rcpp-devel/2012-May/003829.html
http://rcpp-devel.r-forge.r-project.narkive.com/A70U2nVw/problem-with-rinside-hello-world-example
我正在使用带有 R 版本 3.4.4 的 Ubuntu 16.04。任何帮助将不胜感激!