Re: [R] Hook into Coercion Framework for data.frame

2011-04-26 Thread Erich Neuwirth
statconnDCOM, availagble from rcom.univie.ac.at
is a (D)COM server accessing R.
rcom (available from CRAN) is an R package
which can turn R into a COM server or into a COM client.

These tools have their own mailing list which can
be subscribed at rcom.univie.ac.at.




On 4/26/2011 6:20 PM, Von Der Hirschheydt, Juergen wrote:
> Hi,
> 
> I am looking into a way to hook into the R coercion framework to allow
> me to convert table-like data stored within a COM object into a
> data.frame.
> 
> Some of our COM objects have their own table-like data storage, and from
> R's point of view it's an object (EXTPTRSXP) decoarated with a sepcial
> symbol so we can easily identify it.
> 
>   COM_Table <- a_method_that_creates_the_object()
>   class(COM_TABLE)
>   > "QS.IpdgRelation"
> 
> In addition, we have a method that transforms this object into a
> data.frame:
> 
>   relation.to.data.frame <- function(obj) { ... }
> 
> A user can easily transform the above object into a data.frame by
> calling:
> 
>   myDataFrame <- relation.to.data.frame(COM_Table)
> 
> That all works nice and well, but we'd like to take it a step further
> and be able to call
> 
>   data.frame(COM_Table)   and/or
>   as.data.frame(COM_Table)
> 
> To achieve the same coercion. I've tried to hook into the coercion by
> using setAs :
> 
>   setOldClass ( "QS.IpdgRelation" )
>   setAs ( "QS.IpdgRelation", "data.frame", function(from)
> relation.to.data.frame(from) )
> 
> Which allows me to do
> 
>   as ( COM_Table, "data.frame" )
> 
> But I can't seem to get the last step to hook this coercion into the
> data.frame() or as.data.frame() call. Is there a way to achieve this, or
> am I chasing a red hering here ?
> 
> Any help appreciated,
> Thanks a lot,
> 
> Juergen
> 
> ===
>  
> Please access the attached hyperlink for an important el...{{dropped:4}}
> 
> __
> R-help@r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>

__
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.


[R] Hook into Coercion Framework for data.frame

2011-04-26 Thread Von Der Hirschheydt, Juergen
Hi,

I am looking into a way to hook into the R coercion framework to allow
me to convert table-like data stored within a COM object into a
data.frame.

Some of our COM objects have their own table-like data storage, and from
R's point of view it's an object (EXTPTRSXP) decoarated with a sepcial
symbol so we can easily identify it.

COM_Table <- a_method_that_creates_the_object()
class(COM_TABLE)
> "QS.IpdgRelation"

In addition, we have a method that transforms this object into a
data.frame:

relation.to.data.frame <- function(obj) { ... }

A user can easily transform the above object into a data.frame by
calling:

myDataFrame <- relation.to.data.frame(COM_Table)

That all works nice and well, but we'd like to take it a step further
and be able to call

data.frame(COM_Table)   and/or
as.data.frame(COM_Table)

To achieve the same coercion. I've tried to hook into the coercion by
using setAs :

setOldClass ( "QS.IpdgRelation" )
setAs ( "QS.IpdgRelation", "data.frame", function(from)
relation.to.data.frame(from) )

Which allows me to do

as ( COM_Table, "data.frame" )

But I can't seem to get the last step to hook this coercion into the
data.frame() or as.data.frame() call. Is there a way to achieve this, or
am I chasing a red hering here ?

Any help appreciated,
Thanks a lot,

Juergen

=== 
Please access the attached hyperlink for an important el...{{dropped:4}}

__
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.