在对数据帧执行操作后生成ggplot()
绘图时遇到了意外问题。我提供了一个说明性的例子:
func <- function(){
library(ggplot2)
df <- read.table(....)
# perform operation on df to retrieve column of interest index/number
column.index <- regexpr(...)
# now need to find variable name for this column
var.name <- names(df)[column.index]
# also need to mutate data in this column
df[,column.index] <- df[,column.index] * 10
# generate plot
plot <- ggplot(data, aes(x=var.name))+geom_bar()
print(plot)
}
此处ggplot将引发错误,因为var.name
被引用,例如“mpg”。
知道如何解决这个问题吗?
编辑:来自this question的经过测试的解决方案无济于事。
答案 0 :(得分:4)
使用aes_string
,它允许您传递变量的字符串名称。
答案 1 :(得分:-3)
你可以使用包&#34; dplyr&#34;将var.name列重命名为generic(x),然后在x:
上绘图# also need to mutate data in this column
df[,column.index] <- df[,column.index] * 10
# ***NEW*** re-name column to generic name
df <- rename_(df, .dots=setNames(list(var.name), 'x'))
# generate plot
plot <- ggplot(df, aes(x=x))+geom_bar()