[R] subset in a matrix

Peter Ehlers ehlers at ucalgary.ca
Tue Feb 9 21:42:34 CET 2010

As others have said, z[z[, 1] < 0, ] does it. Just in case
you're wondering why your subset command won't work,
str() is your friend (as is so often the case):

str(as.data.frame(z))  ## (I don't think that R has 'as.data.set')

So z is a matrix with column *names* "x1", etc;
as.data.frame(z) is a data.frame with *variables* named "x1" etc.

If you really want to use subset(), then

  subset(z, z[, "x1"] < 0, select = <...>)

will work, but I wouldn't use it.

  -Peter Ehlers

DonDiego wrote:
> Hi,
> I have a matrix of data values like the example bellow. I would like to
> extract a subset of the matrix for the values where the first column is
> negative.  I am using the subset function. However, I am getting an error
> message that the conditional variable doe snot exist.  For some reason, the
> subset operation only works if I transform the matrix to a data set using
> as.data.set(). The help indicates that the subset function can be applied to
> matrixes and data sets. I am wondering if anyone has seen a similar problem
> before. am I using the correct syntax?
> n = 15
> m = 5
> cnames = paste("x",1:m,sep="")
> rnames = 1:n
> z = matrix(rnorm(n*m),n,m,dimnames =list(rnames,cnames))
> Thanks,
> Jorge
> test = subset(z,x1 < 0, select = c(cnames))

Peter Ehlers
University of Calgary

More information about the R-help mailing list