[R] converting character matrix to a dataframe
John M. Miyamoto
jmiyamot at u.washington.edu
Fri Feb 24 02:16:37 CET 2006
Dear R-Help,
Suppose I have a character matrix, e.g.,
(ch.mat <- matrix(c('a','s','*','f','w','*','k','*','*','f','i','o'),
ncol=3))
When I convert 'ch.mat' to a dataframe, the columns are converted to
factors:
(d1 <- data.frame(ch.mat))
mode(d1[,1])
is.factor(d1[,1])
To prevent this, I can use 'I' to protect the column vectors:
(d2 <- data.frame(x1 = I(ch.mat[,1]), x2 = I(ch.mat[,2]), x3 =
I(ch.mat[,3])))
mode(d2[,1])
is.factor(d2[,2])
but this method is cumbersome if the matrix has many columns.
The following code is reasonably efficient even if the matrix has
arbitrarily many columns.
(d3 <- data.frame(apply(ch.mat,2,function(x) data.frame(I(x)))))
mode(d3[,1])
is.factor(d3[,1])
Question: Is there a more efficient method than the last one for
converting a character matrix to a dataframe while preventing the
automatic conversion of the column vectors to factors?
John
--------------------------------------------------------------------
John Miyamoto, Dept. of Psychology, Box 351525
University of Washington, Seattle, WA 98195-1525
Phone 206-543-0805, Fax 206-685-3157
Homepage http://faculty.washington.edu/jmiyamot/
More information about the R-help
mailing list