如何从r中的文件中读取直方图?

时间:2016-01-26 15:32:54

标签: r statistics histogram

关于如何在R中计算直方图有很多资源。但是,我找不到任何解释如何从文件中读取就绪直方图的资源。 例如,我有一个文本文件:

5 0.00413341649086988
15 0.00751482028214599
25 0.00896480849895891
...

其中第一列是中断,binning间隔的开始,第二列是在该bin处具有事件的概率。 如果我这样做:

d <- read.table("input.txt")

每当我使用mean(d)时都会收到错误,因为当然R不知道d的两列实际上是直方图。 我想把它翻译成直方图,只是为了方便计算平均值,标准差,ecc .... 否则,我应该为sum(d$V1*d$V2)做平均值,sqrt(sum((d$V1^2)*d$V2) - (sum(d$V1*d$V2))^2)为标准差,等等。

1 个答案:

答案 0 :(得分:2)

如果您的文本文件如下所示:

"breaks" "dens" "counts"
"1" 0 0.75 3
"2" 0.2 1.25 5
"3" 0.4 1.5 6
"4" 0.6 0.75 3
"5" 0.8 0.75 3

您可以通过将相关向量放入列表,然后分配其类属性来创建直方图对象。以下是执行此操作的函数示例:

make_hist <- function(df){
  his <- list()
  binwidth <- df$breaks[2]-df$breaks[1]
  # Assinging the breaks. Note that the last break is missing from the text file so we must add it
  his$breaks <- c(df$breaks, df$breaks[length(df$breaks)]+binwidth)
  his$counts <- df$counts
  his$density <- df$density
  his$mids <- df$breaks + binwidth/2
  his$xname <- deparse(substitute(df))
  his$equidist <- TRUE
  class(his) <- "histogram"
  return(his)
}

生成的对象的行为类似于使用histogram()创建的对象,例如在调用plot(make_hist(his_txt))