Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Rcpp与正常C++;:标题标志可用吗? 我是Rcpp的初学者(虽然在R和C++中有一些经验),我试图编写一些代码,可以在Rcpp和本机C++中使用。_R_Rcpp - Fatal编程技术网

Rcpp与正常C++;:标题标志可用吗? 我是Rcpp的初学者(虽然在R和C++中有一些经验),我试图编写一些代码,可以在Rcpp和本机C++中使用。

Rcpp与正常C++;:标题标志可用吗? 我是Rcpp的初学者(虽然在R和C++中有一些经验),我试图编写一些代码,可以在Rcpp和本机C++中使用。,r,rcpp,R,Rcpp,因此,我正在编写一些包装函数,它们返回从各种std容器创建的数据帧、数字向量等 我希望它能让我在某处设置一个标志,或者有一个标志,它自动检测代码是在原生C++或Rcpp中使用的。p> 我想知道这样一个标志是否存在,或者我是否应该继续创建一个 最后,我想知道这是否是实现我想要的目标的最佳方式 编辑: 这是一个非常做作的例子: #include <Rcpp.h> using namespace Rcpp; // [[Rcpp::plugins(cpp11)]] #include <

因此,我正在编写一些包装函数,它们返回从各种
std
容器创建的数据帧、数字向量等

我希望它能让我在某处设置一个标志,或者有一个标志,它自动检测代码是在原生C++或Rcpp中使用的。p> 我想知道这样一个标志是否存在,或者我是否应该继续创建一个

最后,我想知道这是否是实现我想要的目标的最佳方式

编辑:

这是一个非常做作的例子:

#include <Rcpp.h>
using namespace Rcpp;
// [[Rcpp::plugins(cpp11)]]

#include <vector>
#include <functional>
#include <algorithm>

#define RCPP
std::vector<double> multbyTwo(std::vector<double> input) {
  std::transform(input.begin(), input.end(), input.begin(), std::bind(std::multiplies<double>(), std::placeholders::_1, 2));
  return input;
}

#ifdef RCPP
// [[Rcpp::export]]
NumericVector timesTwo(NumericVector input) {
  return wrap(multbyTwo(as<std::vector<double> >(input)));
}
#endif // RCPP

/***R
print(timesTwo(10))
***/
#包括
使用名称空间Rcpp;
//[[Rcpp::插件(cpp11)]]
#包括
#包括
#包括
#定义RCPP
std::vector multbyTwo(std::vector input){
std::transform(input.begin()、input.end()、input.begin()、std::bind(std::multiplies()、std::placeholder::1,2));
返回输入;
}
#ifdef-RCPP
//[[Rcpp::导出]]
NumericVector Times2(NumericVector输入){
返回包装(multbyTwo(作为输入));
}
#endif//RCPP
/***R
打印(第二(10)次)
***/

这就是我的意思——用RCPP包一个纯C++函数。(我知道在这种特定情况下会有隐式转换,但对于我将要构建的函数类型不会有隐式转换)

如果您提供一些示例代码,会更容易。我可能会在纯C++中编写代码的主要部分。使用Rcpp属性,从R中使用这些函数并不容易,请记住,
Rcpp::as
Rcpp::wrap
也适用于许多标准容器。一种常见的方法是C++,“骨干”,其中没有RCPP或R头文件,这可以在另一个项目或库中重用。将它与从R获取并从R返回的粘合文件相结合,您就拥有了您的项目。否则,现在就保持它的简单和混合,担心以后的重用。@RalfStubner-谢谢-我认为这可能是一种实现我想要的目的的方法-只需使用属性和
Rcpp::as
Rcpp:wrap
@DirkEddelbuettel-也谢谢。我想我会像你说的那样保持简单,然后如果需要,我会打包成不同的文件。我将首先使用
as
wrap
函数,然后编写一些非常简单的函数来返回我想要的数据帧。如果这个项目变得更大,我会像你说的那样分散。谢谢你们!如果您提供一些示例代码,这将更容易。我可能会在纯C++中编写代码的主要部分。使用Rcpp属性,从R中使用这些函数并不容易,请记住,
Rcpp::as
Rcpp::wrap
也适用于许多标准容器。一种常见的方法是C++,“骨干”,其中没有RCPP或R头文件,这可以在另一个项目或库中重用。将它与从R获取并从R返回的粘合文件相结合,您就拥有了您的项目。否则,现在就保持它的简单和混合,担心以后的重用。@RalfStubner-谢谢-我认为这可能是一种实现我想要的目的的方法-只需使用属性和
Rcpp::as
Rcpp:wrap
@DirkEddelbuettel-也谢谢。我想我会像你说的那样保持简单,然后如果需要,我会打包成不同的文件。我将首先使用
as
wrap
函数,然后编写一些非常简单的函数来返回我想要的数据帧。如果这个项目变得更大,我会像你说的那样分散。谢谢你们!