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