【问题标题】:R histogram range error: some 'x' not counted; maybe 'breaks' do not span range of 'xR 直方图范围错误:一些 'x' 未计算在内;也许“休息”不跨越“x”的范围
【发布时间】:2016-11-23 13:19:52
【问题描述】:

我有一个数据集,我想在 R 中用hist 绘制。数据集中有许多行的值超出了我关心的值。具体来说,我的 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()

input.txt 的示例数据集是:

name actions
foo 3
bar 129
baz 131

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

hist.default 中的错误(数据$actions,breaks = seq(0, 130, by = 1), :
一些“x”不计算在内;也许“休息”不跨越“x”的范围
调用: hist -> hist.default
执行停止

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

我想要的是为 0 到 130 的指定范围内的频率创建一个直方图只是,并且该范围之外的所有频率都将被静默忽略。我该怎么做?

【问题讨论】:

  • 放弃这些观察:with(data, hist(actions[actions >= 0 & actions < 131], breaks=seq(0,130,by=1))。此外, hist 是一个基础 R 图形,因此 library(ggplot2) 是不必要的。
  • 太好了,谢谢!如果您将其作为答案输入,那么我很乐意接受它作为所选答案。

标签: r histogram


【解决方案1】:

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

例如,

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

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

myValues <- seq_len(131)-1
with(data, hist(actions[actions %in% myValues], breaks=myValues)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多