[R] Numeric vector converted mysteriously to characters in data frame?

Jim Holtman jholtman at gmail.com
Thu Mar 17 04:11:15 CET 2011


take a look at what the output of your cbind is; my guess is that it is a character matrix.  you probably want to do

data.frame(...,...,...)

without the cbind.

Sent from my iPad

On Mar 16, 2011, at 18:12, Martin Ralphs <martin.ralphs at gmail.com> wrote:

> Dear R Help,
> 
> I would be very grateful if somebody could explain why this is happening.  I
> am trying to plot a lattice barchart of a vector of numbers with age
> bandings that I have brought together into a data frame.  When I plot the
> variables in their raw vector form, it works.  When I try to plot them in
> the df, R labels the numeric axis with default factor values and treats the
> numeric vector as character.  Why is this?  Apologies if this is blindingly
> obvious, I am new to R.
> 
> Here is some sample code that demonstrates the problem:
> 
> library(lattice)
> 
> # Load in some sample data ...
> ageband <- c(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18)
> agenames <-
> c("00-04","05-09","10-14","15-19","20-24","25-29","30-34","35-39",
> "40-44","45-49","50-54","55-59","60-64","65-69","70-74","75-79","80-84","85
> plus")
> popcount <-
> c(35274,40958,41574,47973,50384,51248,65748,54854,60948,66473,70854,
> 60475,61854,55848,45857,30584,25475,20574)
> 
> 
> region <- "North East"
> test1 <- as.data.frame(cbind(region,ageband,agenames,popcount))
> region <- "North West"
> test2 <- as.data.frame(cbind(region,ageband,agenames,popcount))
> test <- rbind(test1,test2)
> names(test) <- c("GOR","Band","AgeBand","Persons")
> 
> # When I plot my numeric data from the df it is treated as character
> vector...
> 
> hg1 <- barchart(AgeBand ~ Persons | GOR,
>        data=test,
>        origin=0,
>        layout=c(2,1),
>        reference=TRUE,
>        xlab="Count (Persons)",
>        ylab="Quinary Age Band",
>        scales="free")
> 
> hg1
> 
> # But when I plot the source vectors in the same way, it works how I want it
> to... (without the region bit, of course)
> hg2 <- barchart(agenames ~ popcount | region,
>        origin=0,
>        layout=c(2,1),
>        reference=TRUE,
>        xlab="Count (Persons)",
>        ylab="Quinary Age Band",
>        scales="free")
> hg2
> 
>    [[alternative HTML version deleted]]
> 
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.



More information about the R-help mailing list