使用ggplot2的应用函数为data.frame中的多个变量创建条形图

使用ggplot2的应用函数为data.frame中的多个变量创建条形图,r,ggplot2,lapply,R,Ggplot2,Lapply,有没有办法在R中使用应用函数来创建带有ggplot2的条形图 比如说,我们有一个只包含因子变量的数据框,其中一个是布尔变量。在我的例子中,我有一个带有+40个变量的日期框。可以用一行代码将所有变量与布尔变量对应起来吗 data("diamonds") factors <- sapply(diamonds, function(x) is.factor(x)) factors_only <- diamonds[,factors] factors_only$binary <- s

有没有办法在R中使用应用函数来创建带有
ggplot2
的条形图

比如说,我们有一个只包含因子变量的数据框,其中一个是布尔变量。在我的例子中,我有一个带有+40个变量的日期框。可以用一行代码将所有变量与布尔变量对应起来吗

  data("diamonds")
factors <- sapply(diamonds, function(x) is.factor(x))
factors_only <- diamonds[,factors]
factors_only$binary <- sample(c(1, 0), length(factors_only), replace=TRUE)
factors_only$binary <- as.factor(factors_only$binary)
这不起作用:

  sapply(factors_only,function(x) qplot(x, data=factors_only, geom="bar", fill=binary))

请告知

您可以使用
lappy
运行变量名,然后使用
get
调出当前变量

temp <- lapply(names(factors_only),
               function(x) qplot(get(x), data=factors_only, geom="bar", fill=binary, xlab=x))
将产生


运行变量名称的一个很好的功能是,您可以使用这些名称动态命名图中的标签。

您可以使用
lappy
运行变量名称,然后使用
get
调出当前变量

temp <- lapply(names(factors_only),
               function(x) qplot(get(x), data=factors_only, geom="bar", fill=binary, xlab=x))
将产生


运行变量名的一个很好的特性是,您可以使用它们来动态命名图中的标签。

您可以重塑数据的形状,并使用
facet\
m=restrape2::melt(factors_only,id=“binary”);ggplot(m,aes(value,fill=binary))+geom\u bar()+facet\u grid(.~variable,scale=“free\u x”)
(但您需要在
m$value
上使用
因子对条形图进行重新排序:
aes(因子(值,级别=未列出(lapply(仅因子,级别))),fill=binary)
)您可以重塑数据,并使用
facet\
m=restrape2::melt(仅系数,id=“二进制”);ggplot(m,aes(value,fill=binary))+geom_bar()+facet_grid(.~variable,scale=“free_x”)
(但您需要在
m$value
上使用
因子对条形图重新排序:
aes(因子(值,级别=未列出)(lapply(仅因子,级别))),fill=binary)
print(temp[[1]])