R直方图范围误差:一些' x'没有计算;也许'休息'不要跨越' x的范围

时间:2016-11-23 13:19:53

标签: r histogram

我有一个数据集,我想在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出错(data $ actions,breaks = seq(0,130,by = 1),:
        一些' x'没有计算;也许'休息'不要跨越' x'
的范围       电话:hist - > hist.default
      执行暂停

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

我想要的是为指定范围0到130的频率创建一个直方图 ,并且可以忽略该范围之外的所有频率。我怎么能这样做?

1 个答案:

答案 0 :(得分:2)

避免此错误的最佳方法是将您提供的数据子集到基本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)