The second version does not work, because names(diamonds)[1]- "carat"and not carat. Use aes_stringinstead aesfor this.
ggplot( data = diamonds, mapping = aes_string(x = names(diamonds)[1], y = names(diamonds)[8]), stat = "identity")+ geom_point()
EDIT:
To deal with names that have illegal characters, you must enclose them in backlinks (this is the case when you want to use them):
dd <- data.frame(1:10, rnorm(1:10))
names(dd) <- c("(PDH-TSV 4.0)(ET)(240)", "Y")
nms <- paste("`", names(dd), "`", sep="")
ggplot(dd, mapping=aes_string(x=nms[1], y=nms[2])) + geom_point()
Aniko source
share