[BioC] snpMatrix - Creating a 1-column snp.matrix by subsetting a larger snp.matrix

Richard Pearson richard.pearson at postgrad.manchester.ac.uk
Wed Jun 4 22:49:33 CEST 2008


I had done something daft when trying to convert to a regular matrix and back, but have now figured out how to do this - apologies for the noise! For the record here's what I did:

subsetSnpMatrix <- function(snpmat, subsetColumns) {
	new("snp.matrix", matrix(
			as(snpmat[,subsetColumns], "matrix"),
			nrow = dim(snpmat)[1],
			dimnames = list(
				dimnames(snpmat)[[1]], 
				dimnames(snpmat)[[2]][subsetColumns]
			)
		)
	)
} 

sapply(subsets, function(x) class(subsetSnpMatrix(Autosomes, x)))
        none          one          two 
"snp.matrix" "snp.matrix" "snp.matrix" 

If anyone has a more elegant solution that doesn't involve coercing to a regular matrix I'd still find it useful.

Best wishes

Richard.


Richard Pearson wrote:
> Is there any way of subsetting a snp.matrix on just one column, and 
> ending up with a snp.matrix object (rather than a snp object)? Put 
> another way, is there a way of coercing a snp object to be a snp.matrix 
> object? The following example might illustrate the sort of thing I'm 
> trying to do:
> 
>> library(snpMatrix)
>> data(testdata)
>> subsets <- list("none" = NULL, "one" = 1, "two" = 1:2)
>> sapply(subsets, function(x) class(Autosomes[,x]))
>        none          one          two "snp.matrix"        "snp" 
> "snp.matrix"
> I couldn't find anything in the documentation, and am struggling 
> figuring out how to do this by coercing to a regular matrix and then back.
> 
> Thanks
> 
> Richard
> 

-- 
Richard D. Pearson             richard.pearson at postgrad.manchester.ac.uk
School of Computer Science,    http://www.cs.man.ac.uk/~pearsonr
University of Manchester,      Tel: +44 161 275 6178
Oxford Road,                   Mob: +44 7971 221181
Manchester M13 9PL, UK.        Fax: +44 161 275 6204



More information about the Bioconductor mailing list