hist() 不显示所有列
hist() not showing all columns
我正在导入 df
然后 运行ning hist()
在 df
:
df <- read.table("https://leicester.figshare.com/ndownloader/files/23581310", sep = ",", header = TRUE, stringsAsFactors = FALSE)
hist(df)
但它并未显示所有 124 列的直方图 - 仅显示一个子集。我不确定为什么?如何获得 df 中所有列的直方图?我希望能够 运行 hist()
整个数据框,因为它还在每个直方图的底部显示 values/missing 值的数量。
我想知道您如何在不 Vectorize
的情况下在数据框中使用 hist
。最好是您使用不同的设备,例如 png
.
png('foo.png', 2560, 1440)
par(mfrow=c(12, 11))
Vectorize(hist)(df)
dev.off()
更新
为了方便起见,我们可以使用 lapply
和 misfun
获得漂亮的标题和带有凸点和缺失的标签。
misfun <- \(z) paste(
paste(c('n', 'm'), table(factor(as.double(is.na(z)), levels=0:1)), sep=':'),
collapse=' ')
png('foo2.png', 2560, 1440)
par(mfrow=c(12, 11))
lapply(names(df), \(x) hist(df[[x]], main=x, xlab=misfun(df[x])))
dev.off()
数据:
df <- read.table("https://leicester.figshare.com/ndownloader/files/23581310", sep = ",", header = TRUE, stringsAsFactors = FALSE)
如果您只是在寻找每列中缺失值的数量,而不是真正需要直方图,您可以这样做:
colSums(sapply(df, is.na))
如果你需要这个作为图像,那么用text
而不是hist
来画会更清楚:
df2 <- data.frame(col = paste(names(df), colSums(sapply(df, is.na)),
sep = '\n \nMissing = '),
x = (seq(ncol(df)) - 1) %% 12,
y = 12 - (seq(ncol(df)) - 1) %/% 12)
plot(df2$x, df2$y, type = 'n', xaxt = 'n', yaxt = 'n', xlab = '', ylab = '',
bty = 'n')
text(df2$x, df2$y, label = df2$col, cex = 0.5)
我正在导入 df
然后 运行ning hist()
在 df
:
df <- read.table("https://leicester.figshare.com/ndownloader/files/23581310", sep = ",", header = TRUE, stringsAsFactors = FALSE)
hist(df)
但它并未显示所有 124 列的直方图 - 仅显示一个子集。我不确定为什么?如何获得 df 中所有列的直方图?我希望能够 运行 hist()
整个数据框,因为它还在每个直方图的底部显示 values/missing 值的数量。
我想知道您如何在不 Vectorize
的情况下在数据框中使用 hist
。最好是您使用不同的设备,例如 png
.
png('foo.png', 2560, 1440)
par(mfrow=c(12, 11))
Vectorize(hist)(df)
dev.off()
更新
为了方便起见,我们可以使用 lapply
和 misfun
获得漂亮的标题和带有凸点和缺失的标签。
misfun <- \(z) paste(
paste(c('n', 'm'), table(factor(as.double(is.na(z)), levels=0:1)), sep=':'),
collapse=' ')
png('foo2.png', 2560, 1440)
par(mfrow=c(12, 11))
lapply(names(df), \(x) hist(df[[x]], main=x, xlab=misfun(df[x])))
dev.off()
数据:
df <- read.table("https://leicester.figshare.com/ndownloader/files/23581310", sep = ",", header = TRUE, stringsAsFactors = FALSE)
如果您只是在寻找每列中缺失值的数量,而不是真正需要直方图,您可以这样做:
colSums(sapply(df, is.na))
如果你需要这个作为图像,那么用text
而不是hist
来画会更清楚:
df2 <- data.frame(col = paste(names(df), colSums(sapply(df, is.na)),
sep = '\n \nMissing = '),
x = (seq(ncol(df)) - 1) %% 12,
y = 12 - (seq(ncol(df)) - 1) %/% 12)
plot(df2$x, df2$y, type = 'n', xaxt = 'n', yaxt = 'n', xlab = '', ylab = '',
bty = 'n')
text(df2$x, df2$y, label = df2$col, cex = 0.5)