[Rcpp-devel] Template + Rcpp::List error

Diego Monteiro dvm1607 at gmail.com
Thu Feb 18 00:25:17 CET 2016


I made a typo above it's:
 setMethod(
  f = "*getTrajectoryR*",
  signature = c("DataSourceInfo","DataSetInfo"),
  definition = function(datasource, dataset)
  {
    loadPackages()
    dsource <- list("connInfo"=datasource at connInfo,"title"=datasource at title
,"accessDriver"=datasource at accessDriver,"title"=datasource at type)
    print(dsource)

    dset <- list("tableName"=dataset at tableName)
    c(dset,"phTimeName"=dataset at phTimeName)
    c(dset,"geomName"=dataset at geomName)
    c(dset,"trajId"=dataset at trajId)
    c(dset,"trajName"=dataset at trajName)
    c(dset,"objId"=dataset at trajName)

    traj1 <- getTrajectory(datasource,dataset)
    return (traj1)
  }
)


2016-02-17 21:22 GMT-02:00 Diego Monteiro <dvm1607 at gmail.com>:

> I will send the complete code and bold the part where it get stuck.
>
> C++ code template created :
>
> namespace Rcpp{
>   template<> te::da::DataSourceInfo as (SEXP datasource){
>  * Rcpp::List dataSource (datasource);*
>   te::da::DataSourceInfo ds;
>   Rcpp::String typestring = (dataSource["type"]);
>   std::string tstring = typestring;
>   if(tstring == "OGR"){
>
>     std::map<std::string, std::string> connInfo;
>     Rcpp::List cInfo = dataSource["connInfo"] ;
>
> connInfo.insert(std::pair<std::string,Rcpp::String>("URI",cInfo["URI"]));
>     ds.setConnInfo(connInfo);
>     ds.setType("OGR");
>
>      }
>    return ds
>   }
> }
>
>
> Here is where I try to use the template
>
> SEXP getTrajectory(SEXP datasource, SEXP dataset){
>  try
>   {
>     //Indicates the data source
>     te::da::DataSourceInfo dsinfo =
> Rcpp::as<te::da::DataSourceInfo>(datasource);
>    [.....]
>    }
> }
>
>
> Here is the R list I send in the "datasource"
> $connInfo
> [1] "con"
>
> $title
> [1] "titl"
>
> $accessDriver
> [1] "ad"
>
> $title
> [1] "typ"
>
>
> I send using this method :
>
> setMethod(
>   f = "getTrajectory",
>   signature = c("DataSourceInfo","DataSetInfo"),
>   definition = function(datasource, dataset)
>   {
>     loadPackages()
>     dsource <- list("connInfo"=datasource at connInfo
> ,"title"=datasource at title,"accessDriver"=datasource at accessDriver
> ,"title"=datasource at type)
>     print(dsource)
>
>     dset <- list("tableName"=dataset at tableName)
>     c(dset,"phTimeName"=dataset at phTimeName)
>     c(dset,"geomName"=dataset at geomName)
>     c(dset,"trajId"=dataset at trajId)
>     c(dset,"trajName"=dataset at trajName)
>     c(dset,"objId"=dataset at trajName)
>
>     traj1 <- getTrajectory(datasource,dataset)
>     return (traj1)
>   }
> )
>
>
> Is this enough and understandable ?
>
> 2016-02-17 20:58 GMT-02:00 Dirk Eddelbuettel <edd at debian.org>:
>
>>
>> On 17 February 2016 at 20:28, Diego Monteiro wrote:
>> | Hello, I'm trying to implement a conversion from a R type into my own
>> Type ,
>> | but  in the beginning I am getting an error.
>> |
>> | The code is like the following :
>> | template<> MyType as (SEXP x){
>> |
>> |   Rcpp::List dataSource(x);
>> | [.....]
>> | }
>> |
>> | This is the ERROR:
>> | An exception has occurried: could not convert using R function : as.list
>> |
>> | "x"  is a char list.
>> |
>> | Thanks for any help.
>>
>> Can you distill things to a minimal working example?  It is pretty hard
>> for
>> us to say something meaningful otherwise.
>>
>> Dirk
>>
>> --
>> http://dirk.eddelbuettel.com | @eddelbuettel | edd at debian.org
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.r-forge.r-project.org/pipermail/rcpp-devel/attachments/20160217/e2445a7e/attachment.html>


More information about the Rcpp-devel mailing list