我想使直方图用于在数据帧中的所有的定量变量。
数据可以在这里找到
代码在这里:
library(ggplot2)
cereal <- read.csv('Cereals.csv')
quantitative <- c("calories", "protein", "fat", "sodium", "fiber", "carbo", "sugars", "potass", "vitamins", "weight", "cups")
cereal[,quantitative] <- as.numeric(as.character(unlist(cereal[,quantitative])))
for (variable in quantitative){
plot <- ggplot(cereal, aes(variable))
+geom_histogram(binwidth = 0.5)
print(plot)
}
但是我总是收到错误消息:“ StatBin需要连续的x变量:x变量是离散的。也许您想要stat =“ count”?“
我已经检查了一些解决方案,例如将geom_histogram更改为geom_bar或添加binwidth = 0.; 5,但这些方法都没有帮助。
没有人知道如何解决这个问题?谢谢!
答案 0 :(得分:1)
您需要使用aes_string
而不是aes
。您的for循环正在传递字符串(即“卡路里”)而不是对象卡路里。
for (variable in quantitative){
plot <- ggplot(cereal, aes_string(variable)) +
geom_histogram(binwidth = 0.5)
print(plot)
}
现在您的代码将只打印最后一个图,因为随着for循环的进行,每个顺序图都会被擦除。因此,您应该考虑将绘图对象存储在列表中,以便可以查看所有对象。