问题标签 [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.
c++ - 致命错误
我正在通过终端运行此示例。但是fatal error: RInside.h: No such file or directory
该行出现错误,#include<RInside.h>
. 它是从 C++ 到 R 的接口。我在 R 中有RInside包。我的代码:
#include<Rcpp.h>
标题也发生了同样的错误。
包 RInside 版本 0.2.14
包 Rcpp 版本 0.12.17
r - png() ... dev.off() 在我使用 ggplot2 时在 RInside 中不起作用
此代码在 R 中运行良好
但是,如果我像这样从 C++ 评估这段代码:
未创建 png 文件。
我调查了这个问题,发现这个问题取决于 ggplot2。例如简单的代码:
效果很好。如果我使用“网格”包中的 grid.circle() 也会创建文件。ggsave() 函数也很好用。
为什么ggplot不能通过图形设备创建文件?
r - 在 QT 中编译 RInside 时无法打开基础包
我是 QT 的新手。我在使用 RInside 时遇到问题,希望得到一些帮助。
编译时,发生了错误。
编译器是“Desktop Qt MinGW 32bit”,qmake配置是这样的,我也尝试添加RInside lib like“
所有这些都不起作用。
感谢您的帮助!
c++ - RInside - 包装 C++ 函数以在 R 函数中使用
我希望在使用 RInside 的 C++ 程序中使用 R 库 cmaes(协方差矩阵适应进化策略)。
https://www.rdocumentation.org/packages/cmaes/versions/1.0-11/topics/cma_es
有相同算法(libcmaes)的 C++ 实现,但处理约束的方式(这不是算法的固有部分)与 R 实现不同。我以前没有使用过 RInside,所以我使用与库一起分发的示例作为参考点:
https://github.com/eddelbuettel/rinside/tree/master/inst/examples/standard
作为一个最小的例子,我试图集成到 C++ 中的 R 脚本如下所示:
我面临的问题是我的目标函数(它是 cma_es 的函数参数)是用 C++ 编写的(出于性能原因必须保留在 C++ 中),因此它必须以 R 函数接受它的方式包装. 我在示例中看不到任何东西来实现这样的事情。到目前为止,我拥有的 C++ 代码如下:
如果使用 Rcpp 将 C++ 函数传递给 R,则将// [[Rcpp::export]]
使用它来传递它,但此处不适用。以上显然无法执行,并出现以下错误:
所以问题很简单,我如何使用 RInside 包装 C++ 函数,使其可以传递给 R 函数?
r - 在 Windows 上编译 RInside 示例时出错
我在 Windows 上编译 RInside 示例时遇到问题。
在 Rstudio 中,运行
给
从命令提示符,运行
给
显然没有找到这些包,所以我尝试了以下方法:
- 从命令行运行它
set R_HOME=C:\Program Files\R\R-3.5.2
- 检查路径中是否存在 Rtools 和 R 目录
- 像这样修改了 Makefile.win:
R_LIBS_USER := "C:/Users/Admin/Documents/R/win-library/3.5"
R_ARCH := --arch x64
但仍然得到相同的错误。有什么帮助吗?谢谢
编辑:这个答案可能会通过在某处包含这行代码来提供解决方案
但是我不知道在哪里包含它。
EDIT2 我试图在两个库位置重新安装Rcpp
(RInside
通过以管理员身份运行 RStudio)
在 RStudio 中,我仍然有同样的错误sourceCpp
,但是,使用命令提示符和make
方法我确实得到了一个不同的错误:
我想路径中的空格是问题“文件...”将尝试在非空格路径中重新安装 R
r - RInside 使用来自 R 的参数调用
我正在尝试将参数传递给包含 的exe
文件RInside
,并且该文件是使用make
.
通过从这里获得启发的代码。
我有两个担忧:
首先,尝试make -f Makefile.win soraw
给出以下错误。为什么它不工作?
x
其次,从 R 传递和传递y
给这个 c++ 代码(在编译成 exe 之后)而不是在 c++ 代码中声明它们的最佳方式是什么?我应该使用文件吗?
编辑这是尝试使用额外空间时的错误:candidate expects 0 arguments, 1 provided
给
编辑:这是我在修改这些行后得到的错误Makefile.win
omnet++ - 在 Windows 上使用 Veins 和 OMNET++ 配置 RInside
我一直在尝试使用 Veins 和 OMNET++ 配置 RInside,但发现了一些问题。
在经历了Is it possible to use RInside in omnet++/Veins project to benefit from rich R features 和How to setup Eclipse + StatET + Rcpp on Windows中的讨论之后,我在 omnet++ 中创建了一个新项目(共享类型)并尝试配置R里面。我遇到了一些错误("undefined reference to RInside::operator[]", "undefined reference to RInside::parseEvalQ")
.
我知道这是一个链接错误。我对 C++ 配置和基于 Eclipse 的 IDE 相当陌生,因此很难找出问题所在。我还附上了配置的屏幕截图。如果有人可以提供帮助,我将不胜感激。
更新(成功构建 RInside 并确保工具链正确后)
这是makefrag文件
c++ - 使用 RInside 时如何检查 R 命令是否成功执行
我想编写一个程序来使用 RInside 执行 R 命令并判断结果是否为字符串。我创建了一个 RInside 实例并使用它的方法RInside::parseEval来解析 R 命令,然后将结果存储在 SEXP 变量中。我使用TYPEOF检查结果的类型是否为字符串,然后使用其构造函数将其转换为Rcpp::String。问题是,当我尝试解析诸如之类的错误命令时,程序的行为变得有些不可预测。程序如下图所示:paste('hello
当我用 agrument 运行程序时"paste('hello'"
,我得到了输出
res 指向 0x7f0ca84e14d0
结果不是字符串
但是,当我将代码打包成一个函数时,如图所示:
并使用与以前相同的命令行参数运行它"paste('hello'"
,我得到了输出
res 指向 (nil)
结果不是字符串
所以我的问题是,为什么它会这样?当使用 解析错误命令时RInside::parseEval
,是否会引发异常或结果是否为 NULL 指针,或者至少会发生其中一种情况?我上面的代码是否正确地完成了它的工作?
任何帮助将不胜感激。
编辑0:
在花了一些时间阅读代码之后,R 似乎将该命令paste('hello
视为“不完整”,这意味着如果我们稍后发送另一个命令来“完成”它,它将成功执行。
上面代码的结果是
结果你好
c++ - 使用 RInside 重用 RStudio 环境
背景/我尝试过的:
我的最终目标是能够从 RStudio 分派一些 C++ 代码(一个相当大的物理模拟应用程序),并且当 C++ 代码运行时,让它反复与嵌入式 R 实例对话以做出决策。完成后,C++ 代码会将结果返回给 R
起作用的是两个部分分开。使用 Rcpp,我可以从 RStudio 启动物理模拟,并让 C++ 代码将信息返回给 RStudio,假设 C++ 代码不与嵌入式 R 实例对话。使用 RInside/Rcpp,我还能够让 C++ 程序运行并在嵌入式 R 实例进行业务时对其进行查询。
当我尝试将两者结合起来时,我得到一个 R 实例已经初始化的错误——这当然是有道理的,这是 RStudio 实例。我试过看RInside::InstancePtr()
,但它看起来不像RInside::instance_m
是由 RStudio 设置的
问题:是否可以将现有的 RStudio R 实例重新用作嵌入式实例以与 RInside 一起使用?
这似乎是不可能的,一个 R 实例在等待同一个 C++ 程序返回的同时不能接受来自正在运行的 C++ 程序的输入。
上述结构的原因是我希望 R 能够调度许多具有不同参数的物理模拟并汇总这些结果。我还希望某些决策逻辑(嵌入式 R 文件)能够用 R 而不是 C++ 编写,以使用户更容易。这些就是引导我提出上述解决方案的想法