R:绘制 data.frame 中所有列的直方图

Ale*_*lex 9 r numeric histogram dataframe

我是 R 的新用户,我刚刚开始使用它来查看我的数据的分布,但我遇到了这个错误。我有一个数据框,我想绘制它的数字列的直方图。所以我所做的是如下:

num_data <-my_data[, sapply(my_data, is.numeric)] 
for (i in 1:length(names(num_data))){
  print(i)
  hist( num_data[i], main='hist', breaks=20, prob=TRUE)
}
Run Code Online (Sandbox Code Playgroud)

但是我收到错误“hist.default(num_data[i], main = "hist",breaks = 20, prob = TRUE) 错误:'x' must be numeric ' 我检查了 num_data[i] 的类型和它是一个数值列表。所以我不知道是什么问题。任何人都可以给我提示吗?

Psi*_*dom 6

并排ggplot解决方案。

library(ggplot2)
library(tidyr)
ggplot(gather(num_data, cols, value), aes(x = value)) + 
       geom_histogram(binwidth = 20) + facet_grid(.~cols)
Run Code Online (Sandbox Code Playgroud)

  • 如果 df 中也有因素,这将失败。要解决这个问题,你可以改为`iris %&gt;% select_if(is.numeric) %&gt;% gather(cols, value) %&gt;% ggplot(aes(x = value)) + geom_histogram() + facet_grid(.~cols) ` (2认同)

Agi*_*ean 5

比 hist() 更可靠的是来自 Hmisc 包的直方图函数:

library(Hmisc)
hist.data.frame(num_data)
Run Code Online (Sandbox Code Playgroud)

这应该打印数据框中所有列的直方图。