尝试创建玻璃数据集中所有预测值的直方图。我最初使用par(mfrow=c(3,3))在同一个窗口上绘制了所有9个预测器,但得到的一个错误是边距太大。那好吧。无论如何,九次写hist(Glass$X)都是没有效率的。
所以我试着一次把它们都画出来。我对数据进行子集,以便只保留数字列,但是出现了一个错误,即它们不是数字列。我已经验证了所有的列都是数字的。我做错了什么?
library(mlbench)
data(Glass)
library(lattice)
par(mfrow=c(3,3))
hist(Glass$RI)
> Error in plot.new() : figure margins too large
Glass2=subset(Glass[1:9])
hist(Glass2)
> Error in hist.default(Glass2) : 'x' must be numeric发布于 2022-06-03 05:48:11
这是另一种潮流。
library(tidyr)
library(ggplot2)
library(mlbench)
data(Glass)
Glass %>%
pivot_longer(-Type) %>%
ggplot(aes(value)) +
geom_histogram() +
facet_wrap(~name,
ncol = 3,
scales = "free")结果:

发布于 2022-06-03 05:07:25
将数据子集到一个新的数据框架X中。与其键入X$x 9次,不如使用for循环。确保您的绘图窗口非常大,否则您将得到一个错误,即边距太小。
X <- Glass[,1:9]
par(mfrow = c(3, 3))
for (i in 1:ncol(X)) {
hist(X[ ,i], xlab = names(X[i]), main = paste(names(X[i]), "Histogram"), col="steelblue")
}https://stackoverflow.com/questions/72484867
复制相似问题