Re: [R] Adding rownames with different lengths to a table

From: David Winsemius <dwinsemius_at_comcast.net>
Date: Mon, 28 Apr 2008 04:27:39 +0000 (UTC)

David Winsemius <dwinsemius_at_comcast.net> wrote in news:Xns9A8DBD1CB2FF6dNOTwinscomcast_at_80.91.229.13:

> filip rendel <filip61@hotmail.com> wrote in
> news:BAY129-W482E25FE18F0FBDA8C7346B2DF0_at_phx.gbl:
>

>> 
>> Hello! I would like to add names to a table. The table presents
>> median values, numbers of values (n) and percentage(%) for a given
>> agegroup. Thus I would like to add a label above these three
>> variables for each category. But if I try to use colnames I get a
>> message telling me that the number of labels must be equal to the
>> number of columns in the table. I hope someone could understand what
>> I mean! 
>> 
>>      [[alternative HTML version deleted]]

>
> You can use indexing and I had better luck with names(), e.g.:
>
> names(df)[5] <- "var.median"
>
> ----example
>> table(rpois(100,5))

>
> 1 2 3 4 5 6 7 8 9 10 11
> 6 6 5 21 17 18 12 5 7 2 1
>> xp <-  table(rpois(100,5))
>> class(xp)

> [1] "table"
>> names(xp)[5] <- "mode"
>> xp

> 1 2 3 4 mode 6 7 8 9 10 11
> 5 10 15 16 19 12 8 6 6 2 1
>
> #--colnames appears not to work for this class---
>> colnames(xp)[4] <- "four"

> Error in dn[[2]] : subscript out of bounds
>
> I would have thought that a table object was a "matrix-like object",
> but I may be confusing the R definitions of arrays and matrices.

Prompted by an offlist email suggesting that tables only had one named dimension, I have looked at this again. I was wrong about tables not being acceptable arguments to colnames(). The error was in assuming that the above table, "xp", had one row and 11 columns. Instead, it's 11 rows and 1 column. I was misled by the display orientation.

rownames(xp)[5:8] <- c("five", "six", "seven", "eight") # no error
> xp

    1     2     3     4  five   six seven eight     9    10    11 
    5    10    15    16    19    12     8     6     6     2     1 

And tables can have both row and column names airtb <- with(airquality, table(cut(Temp, quantile(Temp)), Month))

> str(airtb)

 'table' int [1:4, 1:5] 24 5 1 0 3 15 7 5 0 2 ...

airtb

         Month
           5  6  7  8  9
  (56,72] 24  3  0  1 10
  (72,79]  5 15  2  9 10

  (79,85] 1 7 19 7 5
  (85,97] 0 5 10 14 5
> colnames(airtb)

[1] "5" "6" "7" "8" "9"
-- 
David Winsemius

______________________________________________
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.
Received on Mon 28 Apr 2008 - 04:33:43 GMT

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Mon 28 Apr 2008 - 05:31:03 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help. Please read the posting guide before posting to the list.

list of date sections of archive