Yes that does get around the problem, thanks! 

I would note, though, that for me at least, its a workaround and not ideal 
functionality, since to use it in my function means that I now I have to have 
two different code snippets depending on whether my input object (here 
`testhdf`) is a matrix or a HDF5Matrix (rather than it automatically using the 
class definitions to give a reasonable result which is what usually happens). 

Thanks,
Elizabeth

> On Apr 4, 2018, at 9:07 PM, Peter Hickey <peter.hic...@gmail.com> wrote:
> 
> Does `rbind(testhdf, DelayedArray(testdata))` give you what you want?
> 
> On Wed, 4 Apr 2018 at 14:58 Elizabeth Purdom <epur...@stat.berkeley.edu 
> <mailto:epur...@stat.berkeley.edu>> wrote:
> Hello,
> 
> I am trying to do a rbind a normal (in memory) matrix with a HDF5Matrix 
> object or DelayedArray object and I am hitting problems. I’m using the 
> development version of R and bioconductor (as of 2 weeks ago) and 
> HDF5Array_1.7.9,   DelayedArray_0.5.23 — see sessionInfo at end of email.
> 
> Basically if I apply rbind between my normal matrix and a HDF5Matrix, I get 
> an error that a method doesn't exist for a DataTable class. If I force my 
> HDF5Matrix object into a DelayedMatrix object using ‘as', I either get 1) a 
> warning that it doesn’t know how to select a method (even if I use 
> DelayedArray::rbind in my command) or 2) In addition to the warning, an error 
> that the column names don’t match, even though neither object has colnames 
> (they are NULL). Which of these I get depends on the order of the entries to 
> rbind — the warning-only version occurs if the DelayedMatrix object is first.
> 
> The warning-only option version gives the correct answer, but I want to 
> understand how to avoid the warning, since I am using this in a package.
> 
> It also seems like a bug that it would matter the order of the arguments, nor 
> why I need to manually manipulate the HDF5Matrix into a DelayedMatrix object 
> in order to do rbind.
> 
> Thanks,
> Elizabeth Purdom
> 
> Here is my code setting up the objects:
> 
> > testdata<-matrix(rnorm(1000),nrow=100,ncol=10)
> > testhdf<-HDF5Array::writeHDF5Array(testdata, "./trash.h5")
> > class(testhdf)
> [1] "HDF5Matrix"
> attr(,"package")
> [1] “HDF5Array"
> 
> Here are the errors/warnings I’m getting, some of which depend on the order 
> of the entries into rbind:
> 
> > test1<-rbind(testhdf,testdata) #error is independent of order of entries
> Error in rbind(...) :
>   missing 'rbind' method for DataTable class HDF5Matrix
> > test2<-DelayedArray::rbind(as(testhdf,"DelayedMatrix"),testdata)
> Warning message:
> In methods:::.selectDotsMethod(classes, .MTable, .AllMTable) :
>   multiple direct matches: "DelayedMatrix", "DataFrame"; using the first of 
> these
> > test3<-DelayedArray::rbind(testdata,as(testhdf,"DelayedMatrix"))
> Error in rbind(...) :
>   column names for arg 2 do not match those of first arg
> In addition: Warning message:
> In methods:::.selectDotsMethod(classes, .MTable, .AllMTable) :
>   multiple direct matches: "DataFrame", "DelayedMatrix"; using the first of 
> these
> 
> > colnames(testdata)
> NULL
> > colnames(as(testhdf,"DelayedMatrix"))
> NULL
> 
> Here is my sessionInfo:
> 
> > sessionInfo()
> R Under development (unstable) (2018-03-22 r74446)
> Platform: x86_64-apple-darwin15.6.0 (64-bit)
> Running under: OS X El Capitan 10.11.6
> 
> Matrix products: default
> BLAS: 
> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib
> LAPACK: 
> /Library/Frameworks/R.framework/Versions/3.5/Resources/lib/libRlapack.dylib
> 
> locale:
> [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
> 
> attached base packages:
> [1] stats     graphics  grDevices utils     datasets  methods   base
> 
> other attached packages:
> [1] HDF5Array_1.7.9     rhdf5_2.23.5        DelayedArray_0.5.23 
> BiocParallel_1.13.3 IRanges_2.13.28
> [6] S4Vectors_0.17.38   BiocGenerics_0.25.3 matrixStats_0.53.1
> 
> loaded via a namespace (and not attached):
> [1] compiler_3.5.0 tools_3.5.0    Rhdf5lib_1.1.5
> 
> _______________________________________________
> Bioc-devel@r-project.org <mailto:Bioc-devel@r-project.org> mailing list
> https://stat.ethz.ch/mailman/listinfo/bioc-devel 
> <https://stat.ethz.ch/mailman/listinfo/bioc-devel>


        [[alternative HTML version deleted]]

_______________________________________________
Bioc-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/bioc-devel

Reply via email to