[R] Data frames
Liaw, Andy
andy_liaw at merck.com
Mon Apr 25 12:40:53 CEST 2005
> From: Eric Lecoutre
>
> > I have two questions about data frames:
> >
> > (1) How can one extract a simple matrix
> > from a data frame? I tried
> >
> > Matrixfromdf = function (frame,without=1)
> > {a=frame[colnames(frame)[-without]]
> > v=unlist(a,use.names=F)
> > matrix(v,ncol=ncol(a))}
> >
> > but it works well only for without=1,
> > perhaps also because the function in (2)
> > gives probably a different meaning to
> > the first column.
>
>
> ?as.matrix
> data(iris)
> as.matrix(iris[,-5]) # numeric
> as.matrix(iris[,-1]) # character
data.matrix() might be a safer choice...
> > (2) How does one define a void data frame
> > with only column names but no values?
> > I tried this indirect way:
> >
> > # Void df with titles from ...
> > Newvoid = function (...)
> > {a=c(...); m=length(a)
> > titles=paste(a,collapse=' ')
> > conn=textConnection(titles)
> > tab=read.table(conn,header=T)
> > close(conn); tab}
>
> Basically, you have to create the sctruture by providing one
> observation
> This will allow you to specify the classes of the variables.
>
> > data.frame(list(x=1,y="character"))[-1,]
> [1] x y
> <0 rows> (or 0-length row.names)
If the columns are all numerics, you can create a matrix with the appriate
column names and 0 rows, then coerce to data frame:
emptyData <- function(varNames) {
m <- matrix(numeric(0), ncol=length(varNames),
dimnames=list(NULL, varNames))
as.data.frame(m)
}
Yet another possibility is to construct the 0-row data frame
directly by giving 0-length named arguments to data.frame().
Andy
>
> Eric
>
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide!
> http://www.R-project.org/posting-guide.html
>
>
>
More information about the R-help
mailing list