R 直方图范围错误:某些“x”未计算在内;也许“休息”不跨越“x”的范围

Rob*_*art 6 r histogram

我有一个我想hist在 R 中绘制的数据集。数据集中有许多行的值超出了我关心的值。具体来说,我的 R 脚本是:

library(ggplot2)    
data = read.table("input.txt", sep=" ", strip.white=TRUE, header=TRUE)
pdf("out.pdf")
hist(data$actions,breaks=seq(0,130,by=1))
dev.off()
Run Code Online (Sandbox Code Playgroud)

一个示例数据集input.txt是:

name actions
foo 3
bar 129
baz 131
Run Code Online (Sandbox Code Playgroud)

如果我运行 R 脚本,我会收到一个错误:

hist.default(data$actions,breaks = seq(0, 130, by = 1), 中的错误:
一些 'x' 未计算在内;也许 'breaks' 不跨越 'x'
调用的范围:hist -> hist。默认
执行停止

我知道为什么会出现这个错误:出现了一次大于 130baz的值,即值为 131。

我想要的是仅为0 到 130 指定范围内的频率创建直方图,并且对于该范围之外的所有频率都将被静默忽略。我怎样才能做到这一点?

lmo*_*lmo 3

避免此错误的最佳方法是将提供给基本 R 函数的数据进行子集化hist

例如,

with(data, hist(actions[actions >= 0 & actions < 131], breaks=seq(0,130,by=1))
Run Code Online (Sandbox Code Playgroud)

也许更灵活的方法是预先指定所需的一组值,以便在您在某个时候改变主意时更容易进行调整。

myValues <- seq_len(131)-1
with(data, hist(actions[actions %in% myValues], breaks=myValues)
Run Code Online (Sandbox Code Playgroud)