您有一个要将列名传递给的绘图函数,如下所示:
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 :(得分:0)
首先,对于flag
变量,使用as.name
函数传递列名以将其从字符串形式中删除。这样做的原因是如果你没有作为字符串传递,R将尝试找到一个带有你输入名称的变量。
接下来,需要将aes
调用为aes_string
以将列名称传递给它,然后尝试对pct
进行字符串化。如上所示,这可以通过在ggplot函数中重新填充列名来解决,在上面的函数中看作\`pct`\
。
我认为将此分享给未来用户会很好,我确信这不是实现这一目标的最简洁方法。