如何将数据框列名从字符串转换为适合(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】:

使用ggplotaes_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)的参数?的主要内容,如果未能解决你的问题,请参考以下文章

将数据框行转换为列名

将数据框转换为字典 [重复]

如何将数据框输出为文本(字符串)混合值和列名R

将 Python Pandas 数据框转换为 JSon 格式并通过使用 Python 添加其列名保存到 MongoDB 数据库中

在 Python 中将 .mdb 文件转换为 .csv 时包括列名

如何使用包含点/句点的列名创建火花数据框?