From: John M. Miyamoto <jmiyamot_at_u.washington.edu>

Date: Fri 24 Feb 2006 - 19:58:35 EST

R-help@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 Received on Fri Feb 24 20:07:50 2006

Date: Fri 24 Feb 2006 - 19:58:35 EST

On Fri, 24 Feb 2006, Prof Brian Ripley wrote:

> It is a bit more efficient to use as.data.frame in your apply.

*>
**> You could make a copy of as.data.frame.matrix (under another name) and remove
**> the special-casing of character matrices. This would efficiently give you a
**> data frame with character columns, but they would then not be treated 'AsIs'
**> in subsequent manipulations. So this is only desirable if efficiency is
**> really important (and it seems unlikely to me that it is).
**>
**> On Thu, 23 Feb 2006, John M. Miyamoto wrote:
**>
**>> 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:
***[SNIP]
**

>> 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?
*

So I take it that this last solution would be:

(ch.mat <- matrix(c('a','s','*','f','w','*','k','*','*','f','i','o'), ncol=3))

(d4 <- data.frame(apply(ch.mat, 2, function(x) as.data.frame(I(x)))))
mode(d4[,1])

is.factor(d4[,1])

You're right that I'm not really concerned with computational efficiency, but only minimizing the amount of code that I have to write and remember. The solution seems to be that I should write a function that accomplishes this task, which I have done. Thank you.

John

R-help@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 Received on Fri Feb 24 20:07:50 2006

*
This archive was generated by hypermail 2.1.8
: Fri 24 Feb 2006 - 21:08:50 EST
*