Hi, I hope I don't make too many naïve statements and assumptions in this post. Essentially what ive done is expose a C++ class to R using Rcpp modules. Within my C++ code I create an object of this class and pass it back to R, where its placed in a list. I then, at a later stage within R, want to get access to the elements in this list, whereupon I get the error message "$ operator is invalid for atomic vectors". I'm running R2.12.1 and presumably the latest versions of the relevant packages, Rcpp, and inline.
In more detail, the following code in R creates an element in the list, in a function that is called by 'lapply' tape <- new(adFun) tape$CreateTape(coefs, Datas) tape$ForwardR(coefs) result <- tape return(result) which returns to a function', and the end result is a list (Nllh.Check), within a function, created by Nllh.Check <<- CheckGEVFit(AllData, NCovarsW, NCovarsWgev, npmu, npsc, npsh, Order, Theta.24, Ccoefs, Nmodel, shlink = SHLINK, Which = WhichMH, adFun) Because of the "<<-", I actually have saved Nllh.Check, and I can look at that from the R prompt, > str(Nllh.Check) List of 580 $ :Formal class 'Rcpp_adFun' [package ".GlobalEnv"] with 1 slots .. ..@ .xData:<environment: 07c7bac8> $ :Formal class 'Rcpp_adFun' [package ".GlobalEnv"] with 1 slots .. ..@ .xData:<environment: 087055e8> $ :Formal class 'Rcpp_adFun' [package ".GlobalEnv"] with 1 slots .. ..@ .xData:<environment: 086a236c> etc And > Nllh.Check[[1]] C++ object <013CBD38> of class 'adFun' <01689C50> Or calling one of the functions of the C++ class > Nllh.Check[[400]]$TapeProperties() Summary of tape Domain dimension 6 Range dimension 1 0-th component of range space corresponds to a parameter in the operation sequence 0 Number of variables in operation sequence + phantom 6754 Number of parameters in operation sequence 135 Number of operations 5429 Total number of operator arguments in operator sequence 10314 Total characters used in PrintFor 0 Number of VecAD vectors 0 Amount of memory required to store the operation sequence 64052 Which to me indicates that this object is ok, the list ive constructed is what I think it should be etc. However if I try to do something within the function that created the list like Nllh.Check <<- CheckGEVFit(AllData, NCovarsW, NCovarsWgev, npmu, npsc, npsh, Order, Theta.24, Ccoefs, Nmodel, shlink = SHLINK, Which = WhichMH, adFun) Nllh.Check[[400]]$TapeProperties() I get the error message Error in Nllh.Check[[400]]$TapeProperties : $ operator is invalid for atomic vectors So, to me the question is, is what I am trying to do possible, or am I going about it the wrong way, or lastly is it a bug? I hope this is enough detail, and apologise if its not. Its not easy to produce a small illustrative example, because the above relies on an external C++ package . Thanks Mark Palmer Senior Statistician CSIRO Mathematics, Informatics and Statistics Phone: +61 8 9333 6293 | Fax: +61 8 9333 6121 | Mobile: 0427502353 mark.pal...@csiro.au<mailto:mark.pal...@csiro.au> | www.csiro.au | www.csiro.au/cmis<http://www.csiro.au/cmis> Address: Private bag 5, Wembley, WA 6913, Australia PLEASE NOTE The information contained in this email may be confidential or privileged. Any unauthorised use or disclosure is prohibited. If you have received this email in error, please delete it immediately and notify the sender by return email. Thank you. To the extent permitted by law, CSIRO does not represent, warrant and/or guarantee that the integrity of this communication has been maintained or that the communication is free of errors, virus, interception or interference. Please consider the environment before printing this email.
_______________________________________________ Rcpp-devel mailing list Rcpp-devel@lists.r-forge.r-project.org https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel