Re: [R] adding a name to cross tab margins

From: Sarah Goslee <>
Date: Fri, 15 Apr 2011 09:36:44 -0400

Hi Dmitry,

Nothing is seriously wrong.

You want to set the fourth column name, so take column names THEN the fourth element:

colnames(PiD)[4] <- "total"

Thank you for providing a clear and simple reproducible example.


On Fri, Apr 15, 2011 at 9:29 AM, Dmitry Berman <> wrote:
> Listers,
> I have created a cross-tab matrix using the following code:
> S <-
> c(1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,1,2,3,1,1,2,3,1,2,2)
> F <-
> c(1,2,3,1,2,3,1,1,1,1,2,3,1,1,3,2,2,2,1,2,3,1,1,1,1,2,3,3,1,3,1,3,1,1,2,3,1,1,3,2,3,2,1,1,1,2,3,1,1,2)
> table(S,F)
> fF <-factor(F, labels = c("Dem","Ind","Rep"))
> fS <-factor(S, labels = c("Dem","Ind","Rep"))
> PiD <- table(fS,fF)
> PiD <- cbind(PiD, margin.table(PiD,1))
> PiD <- rbind(PiD, margin.table(PiD,2))
> Now I would like to add the Column Name and Row Name "Total" to the last row
> and last column (where the marginal totals now hang out). When I use the
> command
> colnames(PiD[,4]) <- c("total") I get the error:
> Error in `colnames<-`(`*tmp*`, value = "WTF") :
>  attempt to set colnames on object with less than two dimensions
> Since I am still new to R, I can't really understand the error... Can
> someone tell me what I am doing wrong here?

Sarah Goslee

______________________________________________ mailing list
PLEASE do read the posting guide
and provide commented, minimal, self-contained, reproducible code.
Received on Fri 15 Apr 2011 - 13:39:06 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 Fri 15 Apr 2011 - 13:40:30 GMT.

Mailing list information is available at Please read the posting guide before posting to the list.

list of date sections of archive