[R] Multi-word column names in a data frame

Jeff Newmiller jdnewm|| @end|ng |rom dcn@d@v|@@c@@u@
Wed Sep 5 06:55:01 CEST 2018


a) missing ggplot2 library
b) cannot word wrap in the middle of a string in R without introducing 
newlines
c) aes is not recommended for working with string variables as names... 
use aes_string
d) Because aes_string will parse the string, you need to add the backticks
e) paste0() is a shorter version of paste( sep="" )

##############################
library(dplyr)
#>
#> Attaching package: 'dplyr'
#> The following objects are masked from 'package:stats':
#>
#>     filter, lag
#> The following objects are masked from 'package:base':
#>
#>     intersect, setdiff, setequal, union
library(ggplot2)
`RefDate` <- as.Date(c("2010-11-1","2010-12-01","2011-01-01"))
`Number of vegetables` <- c(14,23,45)
`Number of people` <- c(20,30,40)
MyData <- data.frame( RefDate
                     , `Number of vegetables`
                     , `Number of people`
                     , check.names = FALSE
                     )
MyVars <- c( "Number of vegetables", "Number of people" )
for ( A in MyVars ) {
   g2 <- ggplot( MyData
               , aes_string( x = RefDate
                           , y = paste0( "`", A, "`" )
                           )
               ) +
     geom_line() +
     labs( title = paste0( A, " adjusted" ) )
   g2
   ggsave( paste0( A, ".jpg" )
         , g2
         , height=5
         , width=8
         , dpi=300
         )
}

#' Created on 2018-09-05 by the [reprex package](http://reprex.tidyverse.org) (v0.2.0).
###################################33

On Tue, 4 Sep 2018, philipsm using cpanel1.stormweb.net wrote:

> I am having trouble working with column names in a data frame. My column 
> names are multi-word text strings and I like it that way. I want to loop 
> through the columns, plotting graphs for each one, and I want to use the 
> column names in the chart labels and in the file names when I save the 
> charts. Here is a simple reproducible example that does not work.
>
> library(dplyr)
> `RefDate` <- as.Date(c("2010-11-1","2010-12-01","2011-01-01"))
> `Number of vegetables` <- c(14,23,45)
> `Number of people` <- c(20,30,40)
> MyData <- data.frame(RefDate,`Number of vegetables`,`Number of 
> people`,check.names=FALSE)
> MyVars <- c("Number of vegetables","Number of people")
> for (A in MyVars) {
> g2 <- ggplot(MyData,aes(RefDate,eval(parse(text=A)))) + geom_line() +
>   labs(title = paste(A," adjusted",sep=""))
> g2
> ggsave(paste(A,".jpg",sep=""),g2,height=5,width=8,dpi=300)
> }
>
> Philip
>
> ______________________________________________
> R-help using r-project.org mailing list -- To UNSUBSCRIBE and more, see
> 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.

---------------------------------------------------------------------------
Jeff Newmiller                        The     .....       .....  Go Live...
DCN:<jdnewmil using dcn.davis.ca.us>        Basics: ##.#.       ##.#.  Live Go...
                                       Live:   OO#.. Dead: OO#..  Playing
Research Engineer (Solar/Batteries            O.O#.       #.O#.  with
/Software/Embedded Controllers)               .OO#.       .OO#.  rocks...1k




More information about the R-help mailing list