[R] Converting matrix to data frame without losing an assigned dimname

David L Carlson dcarlson at tamu.edu
Wed Apr 10 17:27:10 CEST 2013


Other options (possibly counting as ugly):

# Preserving States as rownames for labeling
> data.frame(State=rownames(tableData), tableData, 
      stringsAsFactors=FALSE)

                    State Frost Population  Area
Connecticut   Connecticut   139       3100  4862
Pennsylvania Pennsylvania   126      11860 44966
Maryland         Maryland   101       4122  9891
Virginia         Virginia    85       4981 39780

# Default rownames
> data.frame(State=rownames(tableData), tableData, 
      row.names=NULL, stringsAsFactors=FALSE)

         State Frost Population  Area
1  Connecticut   139       3100  4862
2 Pennsylvania   126      11860 44966
3     Maryland   101       4122  9891
4     Virginia    85       4981 39780
>
----------------------------------------------
David L Carlson
Associate Professor of Anthropology
Texas A&M University
College Station, TX 77843-4352

> -----Original Message-----
> From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-
> project.org] On Behalf Of arun
> Sent: Tuesday, April 09, 2013 6:01 PM
> To: Paul Miller
> Cc: R help
> Subject: Re: [R] Converting matrix to data frame without losing an
> assigned dimname
> 
> Hi,
> 
> library(plyr)
> library(reshape2)
>  df2<-mutate(dcast(melt(tableData),State~Var2),
> State=factor(State,levels=rownames(tableData)))
> dfNew<-df2[as.numeric(df2$State),c(1,3:4,2)]
> dfNew$State<- as.character(dfNew$State)
>  dfNew
> #         State Frost Population  Area
> #1  Connecticut   139       3100  4862
> #3 Pennsylvania   126      11860 44966
> #2     Maryland   101       4122  9891
> #4     Virginia    85       4981 39780
> A.K.
> 
> 
> 
> 
> ----- Original Message -----
> From: Paul Miller <pjmiller_57 at yahoo.com>
> To: r-help at r-project.org
> Cc:
> Sent: Tuesday, April 9, 2013 4:52 PM
> Subject: [R] Converting matrix to data frame without losing an assigned
> dimname
> 
> Hello All,
> 
> Would like to be able to convert a matrix to a dataframe without losing
> an assigned dimname.
> 
> Here is an example that should illustrate what I'm talking about.
> 
> tableData <- state.x77[c(7, 38, 20, 46), c(7, 1, 8)]
> names(dimnames(tableData)) <- c("State", "")
> tableData
> 
> State          Frost Population  Area
>   Connecticut    139       3100  4862
>   Pennsylvania   126      11860 44966
>   Maryland       101       4122  9891
>   Virginia        85       4981 39780
> 
> tableData <- as.data.frame(tableData)
> tableData
> 
>              Frost Population  Area
> Connecticut    139       3100  4862
> Pennsylvania   126      11860 44966
> Maryland       101       4122  9891
> Virginia        85       4981 39780
> 
> Notice how "State" gets removed when converting to a dataframe. How can
> I get a dataframe with a separate column called "State" instead of
> having the state become the row.names? I can think of an ugly way to do
> it but suspect there must be something more elegant.
> 
> Thanks,
> 
> Paul
> 
> ______________________________________________
> 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.
> 
> 
> ______________________________________________
> 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.



More information about the R-help mailing list