[Rcpp-devel] data.frame from R to C++?

Romain Francois romain at r-enthusiasts.com
Tue Apr 12 11:14:05 CEST 2011


Le 12/04/11 10:57, deqiang sun a écrit :
> Hi Dirk,
>
> Thanks very much for your example. From this example I learned how to passing data back and forth between R and C++.
> The example is R code and uses piece of C++ code in side R program.
> Well, it's better if you put this example(by only making slight changes to make R embeded in C++) inside package RInside.
>
> Accessing data by column name is the feature I ( and other people) usually want.
> However, is there a way to access the data Frame by row number?

No. You access the column, and then do whatever with each element, as in 
Dirk's example.

> Regards.
>
> Dsun
> On Apr 8, 2011, at 9:56 AM, Dirk Eddelbuettel wrote:
>
>>
>> Ok, I now committed a slightly nice example to RcppExamples, a package I
>> should revamp to contain more examples.  In there, we now receive a
>> data.frame, operate on each column, create a new data and return old and new.
>>
>> The core of the code (inside the try/catch protection) is
>>
>>       // construct the data.frame object
>>       Rcpp::DataFrame DF = Rcpp::DataFrame(Dsexp);
>>
>>       // and access each column by name
>>       Rcpp::IntegerVector a = DF["a"];
>>       Rcpp::CharacterVector b = DF["b"];
>>       Rcpp::DateVector c = DF["c"];
>>
>>       // do something
>>       a[2] = 42;
>>       b[1] = "foo";
>>       c[0] = c[0] + 7;                      // move up a week
>>
>>       // create a new data frame
>>       Rcpp::DataFrame NDF =
>> 	  Rcpp::DataFrame::create(Rcpp::Named("a")=a,
>> 				  Rcpp::Named("b")=b,
>> 				  Rcpp::Named("c")=c);
>>
>>       // and return old and new in list
>>       return(Rcpp::List::create(Rcpp::Named("origDataFrame")=DF,
>> 				Rcpp::Named("newDataFrame")=NDF));
>>
>>
>> Dirk
>> --
>> Dirk Eddelbuettel | edd at debian.org | http://dirk.eddelbuettel.com

-- 
Romain Francois
Professional R Enthusiast
+33(0) 6 28 91 30 30
http://romainfrancois.blog.free.fr
http://romain-francois.com
|- http://bit.ly/fhqbRC : Rcpp workshop in Chicago on April 28th
|- http://bit.ly/dFyZGB : Hydraulique au Montpellier Comedie Club
`- http://bit.ly/eVXit9 : Eponyme : 40 minutes stand up




More information about the Rcpp-devel mailing list