[R] Frequency vector

Dan Davison davison at stats.ox.ac.uk
Tue Aug 12 13:15:01 CEST 2008


On Tue, Aug 12, 2008 at 01:21:29AM -0700, dennis11 wrote:
> 
> I want to create a vecor with frequencies. 
> 
> I have tried this:
> 
> a <- c(1,1,1,1,2,3,4,5,5)
> b <- table(a)
> print (b[1])
> 
> which results in:
> > print (b[1])
> 1 
> 4 
> 
> The only thing I want is the 4.
> 
> So this seems obvious:
> print (b[1,2])

No! The "1" is just a label. You're not looking at a matrix. (BTW, I think you meant b[2,1]).

First I would say don't get rid of the "1" label unless you need
to. It's just a label telling you what the count is referring to, and
it wouldn't be there if there weren't a good reason for it. It won't
interfere with any numeric calculations you do, e.g.

> b[1] * 2
1
8

But if you really want to extract the integer counts from an object of
class "table" you could do

> as.vector(b)
[1] 4 1 1 1 2

Remember that if an object is not behaving as you would expect, use
str() and class() to see what you've really got:

> class(b)
[1] "table"
> str(b)
 'table' int [, 1:5] 4 1 1 1 2
 - attr(*, "dimnames")=List of 1
  ..$ a: chr [1:5] "1" "2" "3" "4" ...

Dan


> 
> but it does not work:
> Error in b[1, 2] : incorrect number of dimensions
> 
> How do I get a vector or how do I refer to the "4" without getting the "1"
> label as well?





> -- 
> View this message in context: http://www.nabble.com/Frequency-vector-tp18939882p18939882.html
> Sent from the R help mailing list archive at Nabble.com.
> 
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.

-- 
www.stats.ox.ac.uk/~davison



More information about the R-help mailing list