[R] adding a name to cross tab margins

Sarah Goslee sarah.goslee at gmail.com
Fri Apr 15 15:36:44 CEST 2011


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.

Sarah

On Fri, Apr 15, 2011 at 9:29 AM, Dmitry Berman <ravenblur at gmail.com> 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
http://www.functionaldiversity.org



More information about the R-help mailing list