Hi,

I created a class (S4) with some slots like value, date, description (it's actually a financial transaction class). Now I need a method to convert this class forth and back into a single row data.frame, where every slots represents a column. This method looks at the moment like this:

> setMethod("as.data.frame", "Transaction",
       function(x, row.names = NULL,  optional = FALSE, ...){
                       slotnames <- slotNames(x)
slotlist <- data.frame(rbind(1:length(slotnames)))
                       names(slotlist) <- slotnames
                       for(i in slotnames) {
                                   slotlist[1, i] <- slot(x,  i)
                       }
                       return(slotlist)
                   }
)

This method doesn't require predetermined slotnames or types, which is important to me. The method works quite good but the problem is that I have slots of type 'Date' and this method doesn't preserve the type but converts it to numeric.

A couple of tests showed that this is actually a problem of assigning values to data.frame column. Something like this:

> slotlist$DayOfTransaction <- slot(Transaction, DateOfTransaction)

would preserve the type of DateOfTransaction as 'Date'.

But I don't see a way to use this assigning scheme in my method without using the actual slotnames and giving up a lot of flexibility.

Do you have any suggestions? Is there maybe even a simple way to convert S4 slots into data.frames?

Thanks in advance
Ronny

______________________________________________
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.

Does nobody has an idea?

______________________________________________
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.

Reply via email to