如何将数据框列名从字符串转换为适合(qplot,ggplot2)的参数?
Posted
技术标签:
【中文标题】如何将数据框列名从字符串转换为适合(qplot,ggplot2)的参数?【英文标题】:How to convert dataframe column names from strings into arguments suitable for (qplot, ggplot2)? 【发布时间】:2012-01-24 03:29:28 【问题描述】:我想编写一个函数,它接受一个数据帧,并将该数据帧中的所有列绘制为直方图。
对于我事先知道其列名的数据框,我可以写
qplot(colname1, data=df, geom='histogram')
qplot(colname2, data=df, geom='histogram')
...
但我想通用地这样做,以便我可以将列的名称用作字符串"colname1"
。
也就是说,怎么写
plot_histogram_of_column <- function(df, colname)
# qplot(colname, data=df, geom='histogram') won't work
【问题讨论】:
【参考方案1】:使用ggplot
和aes_string
。像这样的:
ggplot(data = df, aes_string(x = colname)) + geom_histogram()
aes_string
正是为此目的而编写的。
【讨论】:
如此处所述:had.co.nz/ggplot2/aes.html 不过,请注意,据我所知,ggplot2 文档站点的任何页面都没有链接到此,因此找到它的唯一方法是知道搜索它。 @Maxy-B 内置文档 (?aes
) 在 0.9.0 版中有很大改进,并包含指向 aes_string
帮助页面的链接。我不记得在 8.9.0 中是否是这种情况。
是的。我只是独立解决了与此相关的我自己的问题。这个功能非常晦涩难懂,但很重要。当然,在绘制大型数据集时要参数化的第一件事就是 y 系列的标识,但示例并未强调这一点。 (为了清楚起见,我编辑了你的标题)
现在的惯用方式是:ggplot(data = df, aes(x = !!ensym(colname))) + geom_histogram()
以上是关于如何将数据框列名从字符串转换为适合(qplot,ggplot2)的参数?的主要内容,如果未能解决你的问题,请参考以下文章
将 Python Pandas 数据框转换为 JSon 格式并通过使用 Python 添加其列名保存到 MongoDB 数据库中