[R] Periods instead of spaces in dataframe names?

Sundar Dorai-Raj sundar.dorai-raj at pdf.com
Tue Feb 11 18:06:03 CET 2003


Tom Arnold wrote:
> Basic question:
> when I use names() to extract the name of a dataframe element, why does it
> have "." instead of " " between words?
> Context:
> I'm importing a CSV file of survey results for analysis. I read them like
> this:
> df <- read.csv("surveydata.csv",nrows=40,header=TRUE,
>                na.string=c("N/A",""),comment.char="",strip.white=TRUE)
> To do a summary of the responses to a question, I can now do something like
> this:
> table(df[13])
>  1  2  3  4
> 13 13  4  2
> and can then do a barplot with:
> barplot(table(df[13])))
> Which is fine. But since the first row of my data file includes the questions
> themselves, I want to use those questions as chart titles, like this:
> barplot(table(df[13]),main=names(df[13]))
> This gives an unexpected result: the title has a "." where every space should
> be between words, like this: "How.many.cats.do.you.own"
> I can't figure out why, or how to get spaces instead of "." to show up. I've
> tried using gsub but without success, to substitute " " for "."
> I'm think I'm confused about something fundamental here, and hope someone has
> the patience to enlighten me. I confess to a being a bit vague in my
> understanding of R's handling of arrays, dataframes, and vectors. My
> background is in C programming and I keep looking for a "string"...
> Thank you very much. Please reply or copy me directly if you respond.

You can use check.names = FALSE in your read.csv(...) call. Or you can 
use gsub as in:

names(df2) = gsub("\\.", " ", names(df2))

The "."  must be escaped in gsub if used in the pattern argument.


More information about the R-help mailing list