[R] Re : Adding column sum to new row in data frame

David Winsemius dwinsemius at comcast.net
Thu May 20 14:43:29 CEST 2010


On May 20, 2010, at 1:01 AM, Joshua Wiley wrote:

> Dear Mohan,
>
> First, I would like to modify my code slightly to:
>
> data <- rbind(data,data.frame(State="Total",t(apply(data[,-1], 2, sum,
> na.rm=TRUE))))
>
> This actually will add a 7th level to your factor automatically.  The
> reason I wanted to change from using c() to data.frame() is that if
> one uses c(), all the columns are converted to character (this has to
> do with different methods for rbind, see ?rbind particularly the
> Details and Value section which describe the different methods for
> rbind and what its behavior will be if it is using the default
> method).  This may not be an issue, but it would hamper any subsequent
> calculations you may wish to perform on your data.


Actually the coercion to a single element type occurs as soon as you  
use c()

 > c("a", 1:10)
  [1] "a"  "1"  "2"  "3"  "4"  "5"  "6"  "7"  "8"  "9"  "10"

Whether rbind might also coerce would depend on the class of arguments  
it is supplied. If you have created an argument with c() that is all  
character because that is the "least common denominator", and then try  
to rbind it to a dataframe, the numeric columns will character-ized.
-- 

David Winsemius, MD
West Hartford, CT



More information about the R-help mailing list