2015-03-13 81 views
4

有一个S4 R类,其对象需要在Rcpp中创建。有没有可能做到这一点,如果是的话,如何?在Rcpp中创建R S4类的对象?

+0

什么样的R类? S3? S4? R6?原子? – 2015-03-13 06:13:10

+0

R中的S4班。 – 2015-03-13 06:16:37

回答

7

当然。这是从Rcpp包中的S4单元测试中取得的。

我们首先在R.创建track类然后,我们通过提供一个串给构造创建一个最小的函数创建一个S4对象,并返回它:

R> setClass("track", representation(x="numeric", y="numeric")) 
R> cppFunction('SEXP trythis(std::string txt) { S4 foo(txt); return foo; }') 
R> trythis("track") 
An object of class "track" 
Slot "x": 
numeric(0) 

Slot "y": 
numeric(0) 

R> 

可以从C中的槽值等PP ++ 。

+1

感谢您的回答!假设我想用一些特定的值来实例化对象,比如x = 2,y = 3;那么怎么做呢? – 2015-03-13 12:53:19

+0

我想你应该能够解决这个问题,因为可用的文档如Rcpp小插曲_Introduction_,_FAQ_和_Attributes_。它确实不那么难。 – 2015-03-13 12:55:32

+0

找到它了,谢谢! – 2015-03-13 13:07:34