The combine method with signature (x = data.frame, y = data.frame)
assumes that the class of a given column is a one-length vector (in
various if and switch statements). However, class(x) can return a
vector of length > 1 for S3 objects.
This is the case for the DataTime column in the phenoData for an
object created by oligo::read.celfiles. This column contains the scan
date of the arrays and is of class
[1] "POSIXt" "POSIXct"
Hence combine() fails for celfile objects created by the oligo
package. Or at least for the exon arrays I am looking at right now.
If I (temporarily) fix this so that the class(pData(XX)$DateTime) has
length 1 (by doing class(pData(XX)$DateTime <- "POSIXt") , combine()
works.
My guess is that the method could be fixed by replacing certain
class() calls with class()[1].
Kasper
On 1/21/10 7:06 PM, Kasper Daniel Hansen wrote:
> The combine method with signature (x = data.frame, y = data.frame)
> assumes that the class of a given column is a one-length vector (in
> various if and switch statements). However, class(x) can return a
> vector of length > 1 for S3 objects.
>
> This is the case for the DataTime column in the phenoData for an
> object created by oligo::read.celfiles. This column contains the
> scan date of the arrays and is of class [1] "POSIXt" "POSIXct"
>
> Hence combine() fails for celfile objects created by the oligo
> package. Or at least for the exon arrays I am looking at right now.
>
> If I (temporarily) fix this so that the class(pData(XX)$DateTime)
has
> length 1 (by doing class(pData(XX)$DateTime <- "POSIXt") , combine()
> works.
>
> My guess is that the method could be fixed by replacing certain
> class() calls with class()[1].
We will take a look. I suspect that we might want to do something a
bit
more subtle since the reason that class() returns a vector of length
more than one is to describe inheritance for the S3 case.
+ seth
Hi Kasper,
On 1/21/10 7:06 PM, Kasper Daniel Hansen wrote:
> The combine method with signature (x = data.frame, y = data.frame)
> assumes that the class of a given column is a one-length vector (in
> various if and switch statements). However, class(x) can return a
> vector of length> 1 for S3 objects.
>
> This is the case for the DataTime column in the phenoData for an
> object created by oligo::read.celfiles. This column contains the
> scan date of the arrays and is of class [1] "POSIXt" "POSIXct"
I've committed a fix for this to Biobase in devel. When you get a
chance, can you test it out and let us know if it now works as you are
expecting?
We could then see about porting the fix to the release.
Thanks,
+ seth
--
Seth Falcon
Bioconductor Core Team | FHCRC
On Jan 25, 2010, at 19:42 PM, Seth Falcon wrote:
> Hi Kasper,
>
> On 1/21/10 7:06 PM, Kasper Daniel Hansen wrote:
>> The combine method with signature (x = data.frame, y = data.frame)
>> assumes that the class of a given column is a one-length vector (in
>> various if and switch statements). However, class(x) can return a
>> vector of length> 1 for S3 objects.
>>
>> This is the case for the DataTime column in the phenoData for an
>> object created by oligo::read.celfiles. This column contains the
>> scan date of the arrays and is of class [1] "POSIXt" "POSIXct"
>
> I've committed a fix for this to Biobase in devel. When you get a
chance, can you test it out and let us know if it now works as you are
expecting?
It works, using Biobase 2.7.4
> We could then see about porting the fix to the release.
While this was a clear bug, it throws an error when something is
wrong, so I see little reason to backport it, unless someone else has
the same problem.
Thanks,
Kasper
> Thanks,
>
> + seth
>
> --
> Seth Falcon
> Bioconductor Core Team | FHCRC