Re: [R] more woes trying to convert a data.frame to a numerical matrix

From: Marc Schwartz <>
Date: Wed, 16 May 2007 07:36:17 -0500

On Wed, 2007-05-16 at 08:10 -0400, Andrew Yee wrote:
> I have the following csv file:
> name,x,y,z
> category,delta,gamma,epsilon
> a,1,2,3
> b,4,5,6
> c,7,8,9
> I'd like to create a numeric matrix of just the numbers in this csv dataset.
> I've tried the following program:
> <- read.csv("sample.csv")
> <- as.matrix([-1,-1])
> However, print( returns what appears to be a matrix of
> characters:
> x y z
> 2 "1" "2" "3"
> 3 "4" "5" "6"
> 4 "7" "8" "9"
> How do I force it to be numbers rather than characters?
> Thanks,
> Andrew

The problem is that you have two rows which contain alpha entries.

The first row is treated as the header, but the second row is treated as actual data, thus overriding the numeric values in the subsequent rows.

You could use:

  as.numeric(as.matrix([-1, -1]))

to coerce the matrix to numeric, or if you don't need the alpha entries, you could modify the read.csv() call to something like:

  read.csv("sample.csv", header = FALSE, skip = 2, row.names = 1,

           col.names = c("name", "x", "y", "z")

This will skip the first two rows, set the first column to the row names and give you a data frame with numeric columns, which in most cases can be treated as a numeric matrix and/or you could explicitly coerce it to one.

HTH, Marc Schwartz mailing list PLEASE do read the posting guide and provide commented, minimal, self-contained, reproducible code. Received on Wed 16 May 2007 - 12:42:40 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 Wed 16 May 2007 - 13:31:07 GMT.

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