2017-07-21 40 views
0

你有绘图功能,你想传递的列名,如下所示:传递列名到ggplot功能与AES

plottr <- function(df, flag, flagaes) { 
    ddply(df, flag, summarize, pct = sum(hitbox==1)/length(hitbox)) %>% 
    ggplot(aes_string(x=flagaes, y='pct')) + geom_bar(stat = "identity") 
} 

的问题,很多人(包括我)的脸ddply函数按照原样获取列名并在您的数据框中找到它。然而,Aes不知道如何处理一个字符串。我们如何解决这个问题?

+0

你是怎么试图调用这个函数的?你传递给每个参数的对象是什么类型的? – MrFlick

+3

我把你的问题标题粘贴到SO搜索面板中,并立即获得重复。我怀疑还有很多其他的重复,如果我们稍微修改一下,就会显示出来。如果您打算发布已有的问题/答案组合,则应该进行诚信搜索以查看是否可以找到一个或多个问题。如果你的问题在重要方面有所不同,你应该引用那些很接近的问题并解释他们为什么不够用。 –

回答

0

首先,对于flag变量,将列名称与as.name函数一起传递,以将其从字符串形式中删除。这是因为,如果你不作为字符串传递,R会尝试用你输入的名字找到一个变量。

接下来,需要调用aes作为aes_string以将列名传递给它,但随后尝试对pct进行串行处理。如上所示,这可以通过反衬ggplot函数中的列名来弥补,在上面的函数中被看作\`pct`\

我认为这将是很好的共享这为未来的用户,我敢肯定,这不是最干净的方式来实现这一点。