向量从R到c++的语法是什么?
What is the R to C++ syntax for vectors?
我是一名R和C程序员,试图使用Rcpp为用C编写的程序创建R(和c++)包装器。我对c++并不熟悉。
有人能帮助我了解如何导入R对象作为c++矢量的文档吗?(我特别尝试导入一个R列表,其中包括int, double和数字列表的混合物。)
Rcpp-introduction.pdf声明:
从R对象到c++对象的反向转换是通过签名为:
的Rcpp::as
模板template <typename T> T as(SEXP x);
它提供了较少的性,并且目前处理R对象转换为基本类型(例如,
bool
,int
,std::string
,…),基本类型的STL向量(例如,std::vector<bool>
,std::vector<double>
,…)和提供接受一个SEXP的构造函数的任意类型。
我对这意味着什么感到困惑,即"模板","typename T"answers"T"填充了什么。我已经看到了很多关于原语的例子,例如
int dx = Rcpp::as<int>(x);
但是我不明白这种语法如何映射到上面的模板文档,而且(更重要的是)不明白如何将其推广到STL向量
也许你把它弄得太复杂了。一个R向量变成了一个c++向量,"因为这就是Rcpp为你做的"。
这里使用的是Rcpp::NumericVector
:
R> library(Rcpp)
R> cppFunction('NumericVector ex1(NumericVector x) { return x + 2;}')
R> ex1(1:4) # adds two
[1] 3 4 5 6
R>
这使用了我们为NumericVector
类型定义+
的事实。您也可以传入和传出std::vector<double>
,但需要添加一些操作,这些操作通常不止一个语句,所以我没有在这里…
所以简而言之,继续阅读文档,如果你需要帮助,可以在rcpp-devel或这里询问。
Edit:为了完整起见,与STL向量
相同R> cppFunction('std::vector<double> ex2(std::vector<double> x) {
for (size_t i=0; i<x.size(); i++) x[i] = x[i] + 2; return x;}')
R> ex2(1:4)
[1] 3 4 5 6
R>
相关文章:
- C++避免重复声明的语法是什么
- 使用基类指针调用基类的值构造函数的语法是什么?
- 这行/语法是什么意思?
- 初始化对象以在 C++08 中作为参数传递的首选语法是什么?
- 将引用绑定到指针的语法是什么?(各种)
- 这个typedef和转换运算符语法是什么意思
- 此语法是什么意思.(::*).
- 将显式指定的函数模板重载作为模板参数传递的正确语法是什么?
- 使用 pybind11 绑定 typedef 类型的正确语法是什么?
- 将此类传递给引用的正确语法是什么?
- 带有约束的可变参数模板的'requires'表达式的语法是什么?
- 在TensorFlow C++中用于feed_dict的语法是什么?
- 调用模板化类内的枚举类枚举器的正确语法是什么
- 返回没有 typedef 的成员函数指针的语法是什么?
- 将强制转换运算符重载到 std::map 的正确语法是什么
- 这种增量语法是什么意思
- 返回结构的方法的正确语法是什么
- C 中的(*)语法是什么意思
- 堆栈(int = 10),这个语法是什么意思(C++)
- variadic模板阵列参考参数的语法是什么?